字符数组为什么不能被赋值 字符串常量?
比如说
char c[6];
c = "77777777777 ";//这儿是不行的
vc2005上报的错是 cannot convert from 'const char [12] ' to 'char [6] '
也有听人解释过 说是 常量字符串 不能被 赋值给 非常量变量
但是
char *str;
str = "7777777777 ";
为什么这样就是可以的呢?str 不是常量阿.
我认为是类型不匹配的问题, 但不是从const到非const不匹配的问题, 而是指针和非指针不匹配的问题, 不知道我理解的对不对, 请达人指教阿!!!!!
[解决办法]
C/C++规定:数组不可以赋值。
就是规定!这也正是数组和指针不同的地方。
[解决办法]
这么理解好了,数组声明后有一块内存空间,数组名是那块内存的首地址,而且是常量,所以不能赋值,你只能通过strcpy、memcpy之类的直接修改那块内存空间的内容
[解决办法]
据说这个故事是这样子的:
对于一个常量字符串的值是该字符串的首个元素的地址
比如 * "7256852dfadsfas " 相当于对指向该字符串首地址的指针解引用 返回值应该是 '7 '
对于
char c[6];
c = "77777777777 ";
c 相当于一个常量指针,他指向的地址是不能改变的,上面的赋值相当于让c指向 "777777... "字符串的首地址,因此是不可以的。
对于
char *str;
str = "7777777777 ";
让str指向 "7777777777 "的首地址,所以可行