就三行代码……指针问题 我想不通啊

[复制链接]
查看11 | 回复2 | 2009-7-8 09:41:38 | 显示全部楼层 |阅读模式
char *p="ABCD"; 的话,只是声明了一个指针p去指向"ABCD"这个字符串,而字符串"ABCD"是静态字符数组,是不允许修改的char p[]="ABCD",则是建立了一个你可以操作的数组,值为"ABCD",所以可以修改. 打个比方,你去图书馆看书,书上第9页的内容你读了以后很有心得,想把心得写下来,但因为是图书馆的书不允许涂划,所以你记住了是在书的第9页.这个"第9页"就相当于一个指针,第9页的内容就是一个静态量,是你不能修改的.等到下次你带了笔记本来,把第9页的内容抄到笔记本上,然后写上自己的心得,这就相当于char p[],你自己建了个数组,把第9页的内容拷到笔记本上了....
回复

使用道具 举报

千问 | 2009-7-8 09:41:38 | 显示全部楼层
哈哈哈,这个问题曾经困扰我好长时间,后来也是在这别人告诉我的,char *p="ABCD"; 这个p指向的内存是一块常量的内存,所以你是修改不了的,而char p[]=“ABCD”;p指向的是数组的首地址,不是常量,所以能修改,明白了吧...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行