1、第一种定义格式
char str[4] = “abc”;
(1)细节1:
在底层,实际存储数据的时候,C语言会把字符串“abc”转换成字符数组进行保存,并且在末尾还要加上’\0′
(2)细节2:
数组的长度,要么不写,不写C语言会自己进行判断
如果写了,要给结束标记的空间进行预留
2、第二种定义格式
char* str = “abc”;
(1)细节1:
在底层,实际存储数据的时候,C语言会把字符串“abc”转换成字符数组进行保存,并且在末尾还要加上’\0′
(2)细节2:
利用指针+双引号的方式定义字符串,会把底层的字符数组放在只读常量区;
只读常量区的特点:
①、内容不可以修改;
②、里面的字符串可以复用
例如:
char* str2 = “abcd”;
char* str3 = “abcd”;
在创建abcd的时候,会检查只读常量区有没有abcd,如果没有才会创建新的,如果有了,不会创建新的,而是直接复用。
printf(“%p\n”,str2);
printf(“%p\n”,str3);
最后输出的结果都是同一个地址值,相当于char* str3对char* str2进行了复用。
3、总结
(1)第一种定义格式:
char str[4] = “abc”;
①、有结束标记,’\0′
②、内容可以修改
(2)第二种定义格式
char* str = “abc”;

4、练习


在用键盘录入把字符串存入数组的时候我们不能用字符串第二种定义格式,要用第一种字符串定义格式,因为涉及到修改数据。
在进行遍历之前,可以定义char*类型的指针记录str的地址值,再用一个char类型的变量c,记录解引用的值,这里主要是用来结束循环;
最后循环完成一次,指针p++,移动数组的下一个数据地址值。
