C字符串和字符数组的区别
2016-08-10 本文已影响120人
WendySays
字符串###
- C规定了一个"字符串结束标志",以字符 '/0' 代表。如果有一个字符串,其中第10个字符为'/0',则此字符串的有效字符为9个。也就是说,在遇到字符'/0'时,表示字符串结束,由它前面的字符组成字符串。
- 系统对字符串常量也自动加一个'/0'作为结束符。
-
可以用字符串常量来初始化字符数组。
如: char c[]={"I am happy"}; 也可直接写成: char c[]="I am happy"; 注意此时数组的长度不是10,而是11,因为系统自动加上了'/0'结束符
字符数组###
- 字符数组不要求最后一个字符为'/0',而为了使处理字符数组和字符串的方法一致,便于测定字符串的实际长度,能及方便在程序中处理, 在字符数组末尾也常加上一个'/0'。
- 如果一个字符数组中包含一个以上'/0',则遇第一个'/0'时输出就结束。
二者区别###
字符数组是一个数组,每个元素的值都可以改变。而字符串指针指向的是一个常量字符串,它被存放在程序的静态数据区,一旦定义就不能改变。这是最重要的区别
对字符串指针方式:
char *ps="C Language";
可以写为:
char *ps;
ps="C Language";
而对数组方式:
char st[]={"C Language"};
不能写为:
char st[20];
st={"C Language"};
只能对字符数组的各元素逐个赋值。
参考文章###
C/C++——字符串和字符数组
http://blog.csdn.net/shinehoo/article/details/5823756
C语言字符串指针与字符数组的区别
http://c.biancheng.net/cpp/html/81.html