免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1731 | 回复: 5
打印 上一主题 下一主题

字符数组符值问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-08 10:03 |只看该作者 |倒序浏览
char s[20]="abcdef";
这样可以;

char s[20];
s="abcdef";
或者s[20]="abcdef";
都不对;

???

论坛徽章:
0
2 [报告]
发表于 2008-06-08 10:12 |只看该作者
char s[20] = "abcdef";
是定义一个长度为 20 的存放字符的空间(这个并不会检查,只是在内存中分配出来),并且指出前几个字符放的是  “abcdef”, 是正确的。

char s[20];
同样是分配空间。
正确。

s = "abcdef";
此时, s 是一个数值(也就是刚刚分配的那 20 个空间在内存中的起始位置),而且是一个只读的量,用等号赋值的话就会错了。

s[20] = "abcdef";

s[20] 也是一个数值(也就是刚刚分配的 20 个字符空间的最后一个位置再往后的一个位置,注意,这就是所谓的数组越界访问,也不会检查到),同上面的结论,它也是个只读量。不能赋值。

论坛徽章:
0
3 [报告]
发表于 2008-06-08 12:18 |只看该作者
原帖由 drunkedcat 于 2008-6-8 10:12 发表
char s[20] = "abcdef";
是定义一个长度为 20 的存放字符的空间(这个并不会检查,只是在内存中分配出来),并且指出前几个字符放的是  “abcdef”, 是正确的。

char s[20];
同样是分配空间。
正确。

...

s不能做左值

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
4 [报告]
发表于 2008-06-08 20:10 |只看该作者
原帖由 ruoyisiyu 于 2008-6-8 12:18 发表

s不能做左值


同意楼上的

论坛徽章:
0
5 [报告]
发表于 2008-06-08 20:19 |只看该作者
简单地说,有的东西看起来一样,但是用起来是不一样的。

论坛徽章:
0
6 [报告]
发表于 2008-06-11 10:36 |只看该作者
原帖由 ruoyisiyu 于 2008-6-8 12:18 发表

s不能做左值



说得有些太专业了,怕楼主看不懂,呵呵,所以我才用了通俗的方法来解释。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP