第一种:char s[] = “lixuan”;
1.这么写很方便,不用考虑数组长度,但没为自己留下余地。
2.编译器其实会将它转换为 char s[7] = {‘l’,‘i’,‘x’,‘u’,‘a’,‘n’,‘\0’}。二者完全等价。
3.s是一个常量,即数组首地址,不可修改。
4.char s[12]; 没有初始化,但已经分配了12个空间,里有随机数据。
第二种:char* str = ”lixuan“;
1.str就是普通的字符指针,指向了常量”lixuan“首个字符。注意这个‘’lixuan‘’与上面的’’lixua‘‘完全不一样,这个是个常量,不可改变,上面那个不是,上面那个就是把常量字符串复制到字符数组里,里面的数据可以变。
2.char* s; 没有初始化不可使用
下面直接看题:
A: str1数组长度为6,str2为7,把str2复制给str1会越界的。
B: str没有初始化,10个空间里全是随机字符,把st连接后就会出现乱码。
D:st1指向的是常量,不可更改。