Chinaunix首页 | 论坛 | 博客
  • 博客访问: 75619
  • 博文数量: 15
  • 博客积分: 607
  • 博客等级: 中士
  • 技术积分: 170
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-20 14:42
文章分类
文章存档

2011年(1)

2008年(14)

我的朋友

分类: C/C++

2008-07-24 14:51:27

相信大家对于int a[];中 a + 1 和 &a + 1之间的区别已经了解了。

但是,a和&a真的只有在+1时有区别么?答案是否。他们最主要的区别是类型不同。

a是一个数组名,它的值为数组首地址。

&a是变量a的地址,它的值与a相同。

但是,他们的类型不一样~,这也是他们俩本质的区别:

下面的程序输出的3个值是一样的:

就是说,谁然 a == &a

但是 *a != *(&a)

而是 *a == **(&a)

或者 *a == *(int *)(&a)

 

1
      2 #include <stdio.h>
      3 main()
      4 {
      5 int a[5]={10,20,30,40,50};
      6 a[5]=60;
      7 printf("%d\n%d\n%d\n\n",*(a),**(&a), * (int *)(&a));
      8 }

阅读(1558) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~