标题:还是指针
取消只看楼主
邹特强
Rank: 2
等 级:论坛游民
帖 子:123
专家分:85
注 册:2016-9-21
结帖率:85.71%
已结贴  问题点数:20 回复次数:5 
还是指针
有这样一段代码:
char*name[3]={"apple","orrange","grape"};
int i;
for(i=0;i<3;i++)
printf("\n%s",name[i]);
我对指针数组怎样划分存储区域有疑惑,如果是普通数组,系统输出name[0]时会把name[1]name[2]一起输出,因为存储区域是连续的,那指针数组又是怎么划分的,如果也是连续的,那么输出应该和普通数组结果一样,但事实却是一个个正常分开着输出了,所以肯定不是,那到底是怎样??求教
搜索更多相关主题的帖子: apple 
2017-02-10 16:47
邹特强
Rank: 2
等 级:论坛游民
帖 子:123
专家分:85
注 册:2016-9-21
得分:0 
回复 2楼 yangfrancis
针对我这个具体的程序这个回答确实简洁精辟,但并没有完全解决我关于指针数组如何开辟存储区域的疑惑。我试过这样一个代码
char*str[3];
int i;
for(i=0;i<3;i++)
scanf("%d",str[i]);
结果系统提示非法访问,但是如果换做普通数组,这样明显可以。我就这个疑惑:指针数组的存储区域是临时开辟(根据需要,所输入的数据多大就开辟多大),不像普通数组定义时就开辟好固定的连续的区域,或者是其他方式的存储??请指教

............
2017-02-11 15:27
邹特强
Rank: 2
等 级:论坛游民
帖 子:123
专家分:85
注 册:2016-9-21
得分:0 
回复 3楼 吹水佬
多谢版主的回复,但并没有完全回答我的问题,能否看下我回答二楼的内容,指教下

............
2017-02-11 15:28
邹特强
Rank: 2
等 级:论坛游民
帖 子:123
专家分:85
注 册:2016-9-21
得分:0 
回复 2楼 yangfrancis
我懂了,不用再看了,谢了

............
2017-02-11 19:04
邹特强
Rank: 2
等 级:论坛游民
帖 子:123
专家分:85
注 册:2016-9-21
得分:0 
回复 6楼 九转星河
对,是我疏忽了,多谢版主

............
2017-02-11 19:04
邹特强
Rank: 2
等 级:论坛游民
帖 子:123
专家分:85
注 册:2016-9-21
得分:0 
回复 3楼 吹水佬
已经懂了,谢谢

............
2017-02-11 19:05



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-474121-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.383704 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved