-
定义一个数组 int a[10]
a表示数组的基地址;
&a表示整个数组的地址;
这两个组虽然数值上一样,但是类型不一样。 -
例如:a+1等价于a[1];
-
而&a+1等价于指向下个地址
#include <stdio.h>
int main(void)
{
int a[5];
printf("a为: %p\n",a);//打印出数组基地址
printf("a+1为: %p\n",a+1);//打印出a[1]的地址
printf("&a+1为:%p\n",&a+1);//打印出下一个数组的基地址
return 0;
}
结果:
- 还有很重要的一点:数组访问越界问题
定义一个int a[5]数组,访问a[-1]和a[5]都属于越界访问,尽管有些编译器不报错,但是呈现出来的值可能是无规律的,也可能是个定值。这种操作我们是要避免的,免得我们在后续项目开发中出现无法理解的错误。