数组名确实能表示首元素的地址
但是有2个例外:
1.sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小,单位是字节;
2.&数组名,这里的数组名表示整个数组,取出的是整个数组的地址;
#include <stdio.h>
int main()
{
int arr[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
printf("%p\t",arr);//首行的地址
printf("%p\n", arr+1);
printf("%p\t", &arr);//所有元素的地址
printf("%p\n", &arr+1);
for (int i = 0; i < 3; i++)
{
int j = 0;
for (j = 0; j < 4; j++)
{
printf("%2d ", arr[i][j]);
}
printf("\n");
}
int line = sizeof(arr)/*所有地址*/ / sizeof(arr[0])/*第0行的地址*/;//计算有多少行
printf("%d\n", line);
int row = sizeof(arr[0])/*第0行的地址*/ / sizeof(arr[0][0]);//计算有多少列
printf("%d\n", row);
return 0;
}