C语言高手请进,关于指针与数组的关系

来源:百度知道 编辑:UC知道 时间:2024/05/27 23:45:03
有一个程序
main()
{int array[10]={0,1,2,3,4,5,6,7,8,9};int i;
for (i=0;i<10;i++)
printf ("%d ",*(array+i));}

输出结果是0 1 2 3 4 5 6 7 8 9
但是我把最后一条语句改成 printf ("%d ",array+i);
后输出的结果是 1245016 1245020 1245024 1245028 1245032 1245036 1245040 1245044 1245048 1245048
改成printf ("%d ",array);
后是十个1245016

array表示数组首地址...array+i就是第i个元素的地址,*(array+i)就表示第i个元素的值,也就是array[i];

如果你去掉星号,就是直接输出地址了,注意到相邻两个地址相差4,其实也就是相差一个int的大小,因为sizeof(int)=4

array是数组的首地址.
*(array+i) 是首地址偏移i的存储单元中的值.就是array[i]