一、定义区别
arr表示数组首元素地址
&arr表示整个数组,取出的是整个数组的地址(也叫数组指针)
二、二者偏移量不同
arr与&arr都指向数组的首地址
arr偏移量为一个int的大小
arr+1:指向下一个元素的地址
&arr偏移量为6个int的大小
三、数组指针
int (*p)[n]={} (n为个数)
其中(*p),加()的原因是*的优先级低于[ ]。
int (*p)[5]={0,0,0,0,0};
p指向包含5个int类型的数组,p指向这个数组的首地址
#include <stdio.h>
int main()
{
int temp[5] = {1, 2, 3, 4, 5};
int (*p)[5] = &temp;
int i;
for(i = 0; i < 5; i++)
{
printf("%d\n", *(*p + i));
//或者 printf("%d\n", (*p)[i]);
}
return 0;
}
temp指的是这个数组的 第一个元素 的首地址。
&temp 指的是这 整个数组 的首地址。