| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1309 人关注过本帖
标题:还是指针
只看楼主 加入收藏
邹特强
Rank: 2
等 级:论坛游民
帖 子:123
专家分:85
注 册:2016-9-21
结帖率:85.71%
收藏
已结贴  问题点数:20 回复次数:13 
还是指针
有这样一段代码:
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
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:10 
用引号括起来的部分末尾会被添上\0,所以它能为你分段
2017-02-10 17:16
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10570
专家分:43038
注 册:2014-5-20
收藏
得分:5 
可以理解为这样:
#include <stdio.h>
int main()
{
    char s1[] = "apple";
    char s2[] = "orrange";
    char s3[] = "grape";
    char *name[3] = {s1, s2, s3};
    int i;
    for (i=0; i<3; i++)
        printf("\n%s", name[i]);
}
2017-02-10 17:35
邹特强
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: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:5 
回复 5楼 邹特强
指针数组储存的是字符串的首地址而不是把整个字符串储存在数组里面~引用的字符串是常量~可以读取但不可改变~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-02-11 15:30
邹特强
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
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 8楼 邹特强
版主~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-02-11 19:16
快速回复:还是指针
数据加载中...
 
   



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

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