| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 560 人关注过本帖
标题:指针数组同一地址怎么输出不同的值呢
只看楼主 加入收藏
H_J_Huang
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-10-9
结帖率:100%
收藏
 问题点数:0 回复次数:4 
指针数组同一地址怎么输出不同的值呢
程序代码:
char name[2]={'H','J'};
printf("%d %d %d\n",name,&name[0],&name[1]);
printf("%c\t%c\n",name,name[0]);

name和&name[0]的地址一样,但输出的值不一样,谁帮我讲一下这个问题啊,先谢谢了!
2013-11-04 07:43
liufashuai
Rank: 9Rank: 9Rank: 9
来 自:冥界-魔域-魂殿
等 级:蜘蛛侠
威 望:1
帖 子:370
专家分:1374
注 册:2012-6-22
收藏
得分:0 
你丫的这么小气,一分都没有!

有点不明白你说的什么意思,首先,你也知道name和name[0]的地址是一样的,但是决定一个数据的不止是地址还有这个地址表示的类型
地址+类型(也就是占几个字节) 就是指针的本质含义
这里类型你输出的都是char类型,没有什么歧义,但是你没有完全对应
  name      ---->  *name
  &name[0]  ---->  *(&name[0]) = name[0]

这就是结果不一样的原因,understand?

有一种落差是,你配不上自己的野心,也辜负了所受的苦难。






2013-11-04 08:56
pycansi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:418
专家分:1060
注 册:2012-7-26
收藏
得分:0 
printf("%c\t%c\n" ,name,name[ 0 ]);
name和&name[0]的地址一样,但输出的值不一样

…………

[ 本帖最后由 pycansi 于 2013-11-4 09:23 编辑 ]


莫问前尘有愧,但求今生无悔
2013-11-04 09:18
zhaogay
Rank: 7Rank: 7Rank: 7
来 自:宫
等 级:黑侠
帖 子:151
专家分:586
注 册:2013-10-10
收藏
得分:0 
char name[2]={'H','J'};
printf("%d %d %d\n",name,&name[0],&name[1]);name和&name[0]值相同好理解
printf("%c\t%c\n",name,name[0]);--》name这里相当是个常量值,假设为2000,转成%c,把2000向ascii转,最后得出一个字符,所以每次运行,数组地址在变,每次都不一定一样。name[0]此处相当*name,根据%c解析为H。


好好学习,天天想上
2013-11-04 11:08
anitaM
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-10-19
收藏
得分:0 
指针据说是C语言最难的,,,
2013-11-04 12:02
快速回复:指针数组同一地址怎么输出不同的值呢
数据加载中...
 
   



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

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