数组中a和&a的区别

来源:岁月联盟 编辑:猪蛋儿 时间:2011-12-08

 

最近在看C语言深入一点方面的书,感觉指针和数组的关系有很大要理解的地方。偶尔看到有人写了关于指针和数组的长篇大论。直觉告诉我那是一篇好文章。一定是那位高手几年来实践和琢磨的成果。如果能达到他理解的那种水平,那我的C语言又会上一个台阶。但是为了能有深刻的体会,我先不看他得文章,自己先琢磨一下。

int a[5]={0,1,2,3,4}

int *p1=a;           //将p1定义为指向数组a首元素的首地址,而不是指向数组a的地址,虽然值一样,意义不一样

a+i不等于&a+i

a+i==a+i*sizeof(a[0])而&a+i=a+i*sizeof(a)

下面程序的运行结果为? www.2cto.com

#include<stdio.h>

#include<stdlib.h>

int main()

{

    int a[5];

    int *p1=a;

    int *p2=&a;

 

    printf("%p/n",a);

    printf("%p/n",a+1);

    printf("%p/n",&a+1);

 

    system("PAUSE"); 

    return 0;

 

 

}

在我的机子上运行结果为:0022FF20

                                           0022FF24

                                           0022FF34

 

摘自 雷格码

图片内容