c中字符数组和字符串的区别

如题所述

char *p;  //没有分配空间,使用的时候,需要先分配空间,再使用
     //或者,这个指针是指向其它实体的,就不必分配空间。
     //如果有实体,则在使用完毕后,需要释放空间
p = (char*) malloc(1024);
strcpy(p, "123abc");//注意,字符串有结束符'\0',所以,长度实际是占用了7个byte空间
                    //并且,在对字符串做修改,等操作时,要注意结束符的位置是否发生
                    //了变化。有时需要自己设置字符串结束符。
*(p+2) = '\0';      //如本句,将字符串"123abc"截断成"12"
free(p);            //释放空间。

char[20] a; //数组则要注意,没有结束符。空间是先分配好的,所以没有释放的需要。
            //把数组当作字符串使用时,要注意没有结束符的问题。
char *p = a;//可以这样用
strcpy(a, "123abc");//这时,是有赋值结束符的
a[0] = '1';
a[1] = '2';
a[2] = '3';
a[3] = 'a';
a[4] = 'b';
a[5] = 'c'; //这样赋值,a[6]不一定是'\0',所以把a当作字符串使用时,要注意加上
a[6] = '\0';//这句话

温馨提示:答案为网友推荐,仅供参考
相似回答