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

bastenf 2007-08-29 09:46:32
比如说
char c[6];
c ="77777777777";//这儿是不行的
vc2005上报的错是 cannot convert from 'const char [12]' to 'char [6]'

也有听人解释过 说是 常量字符串 不能被 赋值给 非常量变量

但是
char *str;
str = "7777777777";

为什么这样就是可以的呢?str 不是常量阿.

我认为是类型不匹配的问题, 但不是从const到非const不匹配的问题, 而是指针和非指针不匹配的问题, 不知道我理解的对不对, 请达人指教阿!!!!!
...全文
773 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
stushl 2011-09-23
  • 打赏
  • 举报
回复
4楼,c不是相当于常量指针,是指针常量吧
bastenf 2007-08-29
  • 打赏
  • 举报
回复
基本搞明白了, 结了, 谢谢各位达人啊!
sxlengwa 2007-08-29
  • 打赏
  • 举报
回复
据说这个故事是这样子的:
对于一个常量字符串的值是该字符串的首个元素的地址
比如 *"7256852dfadsfas" 相当于对指向该字符串首地址的指针解引用 返回值应该是 '7'

对于
char c[6];
c ="77777777777";
c 相当于一个常量指针,他指向的地址是不能改变的,上面的赋值相当于让c指向 "777777..."字符串的首地址,因此是不可以的。

对于
char *str;
str = "7777777777";
让str指向"7777777777"的首地址,所以可行
believefym 2007-08-29
  • 打赏
  • 举报
回复
指针的话是变量,所以可以指向任意的地址
believefym 2007-08-29
  • 打赏
  • 举报
回复
这么理解好了,数组声明后有一块内存空间,数组名是那块内存的首地址,而且是常量,所以不能赋值,你只能通过strcpy、memcpy之类的直接修改那块内存空间的内容
taodm 2007-08-29
  • 打赏
  • 举报
回复
C/C++规定:数组不可以赋值。
就是规定!这也正是数组和指针不同的地方。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧