#include <stdio.h>
void fun(int p[10])//降级为int *指针
{
printf("%p\n",p);//same
printf("%p\n",&p);//not same//!!!!!!!!!!从这里看出降级了
printf("%p\n",&p[0]);//same
printf("\n");
printf("%p\n",p+1);//same
// printf("%p\n",&(p+1));//error
printf("%p\n",&(p[1]));//same
}
//结论:数组名:
// 数组首地址,可以当作普通指针+-
// 蕴含数组的空间大小,占多少字节
// 取数组名的地址(首地址),还是首地址
// 降级后->非空类型指针:
// 内存单元首地址,普通指针+-
// 不知道首地址后面还有多少字节
// 可以附上[]当作数组来用
// 取普通指针的地址,就是二级地址了
int main(void)
{
int array[10] = {0};
printf("%p\n",array);//same
printf("%p\n",&array);//same
printf("%p\n",&array[0]);//same
printf("\n");
printf("%p\n",array+1);//same
// printf("%p\n",&(array+1));//error
printf("%p\n",&(array[1]));//same
printf("\n");
fun(array);
return 0;
}
output
0x7ffd2af1d3a0
0x7ffd2af1d3a0
0x7ffd2af1d3a0
0x7ffd2af1d3a4
0x7ffd2af1d3a4
0x7ffd2af1d3a0
【0x7ffd2af1d388】
0x7ffd2af1d3a0
0x7ffd2af1d3a4
0x7ffd2af1d3a4