首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

字符数组为什么不能被赋值 字符串常量?该怎么处理

2012-02-04 
字符数组为什么不能被赋值 字符串常量?比如说charc[6]c 77777777777 //这儿是不行的vc2005上报的错是

字符数组为什么不能被赋值 字符串常量?
比如说  
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 "的首地址,所以可行

热点排行