1、它们的地址值是一样的
int p[10];
若 p+1,则值为 p 的地址 + 4字节
若 &p+1,则值为 p 的地址 + 40字节
2、数组首元素地址
数组名,就是数组元素的首地址,该值是一个常量,不能被修改,一定程度上等同于常量指针;
3、数组地址
&数组名,整个数组的地址;
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/**
* @brief 主函数入口
* @return
*/
int main()
{
// 定义数组
int array[10] = {0};
// 打印数组首元素地址
printf("array : %d\n", array);
// 打印数组首元素地址 + 1
printf("array + 1 : %d\n", array +1);
// 打印数组地址
printf("&array : %d\n", &array);
// 打印数组地址 + 1
printf("&array + 1 : %d\n", &array + 1);
// 命令行不要退出
system("pause");
return 0;
}
输出结果:
array : 6422184
array + 1 : 6422188
&array : 6422184
&array + 1 : 6422224
请按任意键继续. . .
4、注意
数组首元素地址(数组名字)如果是p,则p+1指向第二个元素的地址
数组地址(&数组名字)如果是p,则p+1就跳过这个数组而指向这个数组中最后一个元素
"&数组名[0]”表示的是数组的首元素地址,要注意的是,这个首元素地址是第一个元素数组的首地址。