定义及初始化
- 字符数组是用来存放字符的数组,数组元素的类型是char型,元素用单引号;定义时对于数组的长度可以自行选择是否规定,一旦规定了数组的长度,那元素个数就不能超过这个长度。初始化时,可以指定数组的大小(含有多少个元素)、可以对数组全部或者部分赋值初始化,也可以用字符串对数组进行初始化。
- 字符串就是用双引号括起来的任意字符序列,可以看作是一个个单个字符的数组,但是字符串的末尾有’\0’结束标记。初始化时,可以将字符串赋值给一个字符数组,也可以用字符型指针变量。
- 字符串可以理解为由字符数组形变而成,在末尾加上了’\0’。
赋值方式
-
字符串数组可以对数组中任意一个元素赋值,可以在定义的时候用字符串为其赋值,但是定义了一个字符数组之后,在后面为其赋值不可以用字符串了(这一点很多人都容易忽略,尤其是在C语言的选择题当中)。
-
字符串在定义时可以用字符串直接进行赋值,在使用时,也可以对其中的某个元素进行更改。字符型指针字符串在使用时可以再次用字符串进行赋值,但是字符数组定义的字符串不行。
代码演示
//字符串数组的定义
char a1[5];//仅定义
char a2[5] = {'a','b','c','d'};//定义并初始化
char a3[] = {"abcd"};//用字符串初始化
char a4[] = "abcd";//用字符串初始化
//字符串的定义
char str1[] = "abcd";//利用字符型数组
char* str2 = "abcd"; //利用字符型指针
//字符数组赋值
char a[5];
a[0] = 'a';//通过下标操作
//字符串赋值
char* str;
str = "abcd";//可以用字符串直接赋值
实例讲解
答案:C
解析:乍一眼看下去感觉四个选项似乎都对。那我们就来多看几眼,找找四个选项到底有什么不同,题目的考点究竟在哪里。对于B选项,其实就是一个最基础的字符数组,没有一点问题。ACD都通过了字符串对数组a进行了初始化,而字符串与字符数组很重要的一点不同是字符串比字符数组多了’\0’,正是这个’\0’让C选项的元素超出限制了。而D选项因为没定义数组元素多少逃过一劫(计算机自己会帮忙定义大小)。
答案:D
解析:题目中有字符型指针和字符数组。字符型指针字符串在使用时可以再次用字符串进行赋值,但是字符数组定义的字符串不行。所以首先排除A、C选项。B选项的大括号明显就是对数组的初始化使用的,根本不是一个字符串,所以选择D项。
写在最后
字符数组与字符串定义与初始化,基础赋值就讲到这里,接下来应该还会有关于字符串的讲解,毕竟这也是个重点与难点(如果"万恶"的指针结合起来的话),接下去的几天我也会根据我自身刷题的经历来分享一些做题经验,主要内容当然是C语言当中的难点与易错点。大家如果有什么学习上的困惑可以在评论区里留言或者私信我,看到的话一定会及时回复,这期的素材也是与博主Aikihi讨论得到,大家对编程语言感兴趣的也可以去关注他(他最近整理了很多素材,近期会发布),让我们一起学习,共同进步!
最后的最后,请喜欢我文章的朋友们多多点赞关注哦!