C++数组不完全等价指针的两种情况
1,sizeof
2,对数组名取地址(&)
以上两种情况下,数组名是数组类型
除了以上情况下,数组名在其他任何情况下都是指向数组首元素的指针
void test01()
{
int arr[] = {1, 2, 3, 4};
printf("sizeof arr:%d\n", sizeof arr);
printf("&arr addr : %d\n", &arr); //arr指向整个数组
printf("&arr + 1 addr : %d\n", &arr + 1); //取的是整个数组的步长
int *p = (int *)arr; //p是指向数组的首元素
printf("p value = %d\n", *p); //指向首元素的值
printf("p adrr = %d\n", &p); //p本身分配的地址
printf("&p adrr = %d\n", &*p); //指向数组首元素的地址
printf("&arr[0] adrr = %d\n", &(*(arr + 0))); //数组首元素的地址
}

浙公网安备 33010602011771号