字符数组和字符串

一、字符数组和字符串的再认识

此处关于字符串是否是字符数组的问题,此处我们需要明确:

  1. 字符数组,完整地说叫字符类型的数组。字符数组不一定是字符串。
  2. 字符串是最后一个字符为NULL字符的字符数组。字符串一定是字符数组。
  3. 字符数组的长度是固定的,其中的任何一个字符都可以为NULL字符。
  4. 字符串只能以NULL结尾,其后的字符便不属于该字符串。
  5. strlen()等字符串函数对字符串完全适用,对不是字符串的字符数组不适用。

二、字符串数组

字符串数组是二维字符数组,同理,二维字符数组不一定是字符串数组 
接下来以一段代码进行说明:

#include <stdio.h>
int main(void)
{
    int  i;
    //这是字符数组赋初值的方法,维数:4X2
    char cArr[][2] = {{'Q','U'},
                     {'A','N'},
                     {'X','U'},
                     {'E','\0'}};
    //这是字符串数组赋初值的方法,维数:4X3
    char sArr[][3] = {"qu","an","xu","e"};

    //用sizeof()求长度
    for (i=0; i<4; i++) {
        printf("%d: %d  %d\n", i, sizeof(cArr[i]), sizeof(sArr[i]));
        printf("[%s] [%s]\n", cArr[i], sArr[i]);
    }
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

从上面可以看出,cArr[i]的长度为2,sArr[i]的长度为3,因为多了一个NULL字符。

三、字符串与字符数组的相互转化

字符数组中插入一个NULL字符,就形成了字符串,一般NULL字符在有效字符的最后。

#include <stdio.h>
#include <string.h>

int main(void)
{
    //因为最后有NULL,所以这就变成了字符串
    char cArr[] = {'Q', 'U', 'A', 'N', 'X', 'U', 'E', '\0'};
    //因为少定义了一位,最后无NULL,所以这就变成了字符数组
    char sArr[7] = "quanxue";
    //最后一个元素未赋值
    char tArr[16] = "www.quanxue.cn";

    //用sizeof()求长度
    printf("cArr: %2d ,%2d\n", strlen(cArr), sizeof(cArr));
    printf("sArr: %2d ,%2d\n", strlen(sArr), sizeof(sArr));
    printf("tArr: %2d ,%2d\n", strlen(tArr), sizeof(tArr));

    //将tArr的最后一个元素赋值,字符串就成了字符数组
    tArr[15] = '!';

    //作为字符数组,将显示16个字符
    for (i=0; i<16; i++) printf("%c", tArr[i]);  //字符数组的显示方法
    //作为字符串,将显示14个字符。
    printf("\n%s\n", tArr);     //字符串的显示方法

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

四、数组的输入和输出

getchar()和putchar()函数是单个字符的输入输出,gets()和puts()是字符串的输入输出,也是标准函数,在stdio.h中被定义。

版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/sophies671207/article/details/54747700

猜你喜欢

转载自blog.csdn.net/houyichaochao/article/details/80749315