鱼C论坛

 找回密码
 立即注册
查看: 2168|回复: 6

这个是怎么理解?

[复制链接]
发表于 2011-11-27 12:31:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
void main()
{
      char a[5]={"1355"};
      printf("&a=%x\n",&a);
      printf(" a=%x\n",a);   

}
为什么会结果一样?&a==a;&a不是二级指针?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-27 13:47:49 | 显示全部楼层
不清楚 帮你顶
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-27 13:58:51 | 显示全部楼层
首先要清楚的是a是指向数组的指针,那么&a就是取该指针的地址,而printf打印出来的就是该地址的指针所指向的数组,那么性质也就是和a一样,不知这样解释你听懂了没
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-27 15:45:39 | 显示全部楼层
对于数组来说:a和&a的值都是a[0]的地址值,你打印出来的当然一样啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-29 00:33:33 | 显示全部楼层
这种写法在ANSI C中是非法的,因为&a是一个指向数组的指针,而在大多数早期版本的C语言实现中,并没有所谓“数组的地址”这一概念,因此&a或者被视为非法,或者就等于a

以上说明是我在看C陷阱与缺陷这本书介绍的。
你的代码要不就是提示“非法”要不就是&a == a
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-11-29 15:42:20 | 显示全部楼层
不懂啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-30 09:11:01 | 显示全部楼层
&表示取址,a表示数组开始地址,所以&a==a
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-28 20:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表