BeWithYou

胡搞的技术博客

  1. 首页
  2. C/C++/Lua
  3. C中的char*和char[]

C中的char*和char[]


今天又遇到一个问题。看下面的代码。

char* s = "abcd";
s[1]='\0';

这样会报bus error。查了下总线错误,一般发生于在非法的地址上进行取值赋值操作。难道是char* 定义的字符串不能修改么?
确实是这样的。

char* s = "abcd";

定义了一个指向字符的指针,他并不知道内存有多大。如果要赋值的话,会提示错误,因为内存是不可写的。

char s[] = "abcd";

定义了一个字符数组,是可以进行元素赋值操作的。
一个是char型指针,一个是数组指针,还是有区别的。
如果这样:

char* s=(char *)malloc(5*sizeof(char));

也是可以赋值的。实际上它也是一个数组指针。

回到顶部