數(shù)組名的含義:
1.sizeof(數(shù)組名)埃唯,這里的數(shù)組名表示整個數(shù)組撩匕,計算的是整個數(shù)組的大小
2.&數(shù)組名,這里的數(shù)組名表示整個數(shù)組墨叛,取出的是整個數(shù)組的地址
3.除此之外所有的數(shù)組名都表示首元素的地址
#include<stdio.h>
int main()
{
int a[3][4]={0};
printf("%d\n",sizeof(a));? ? //48=3*4*sizeof(int)
printf("%d\n",sizeof(a[0][0]));? //4 --第一行第一個元素
printf("%d\n",sizeof(a[0]));? ? //16--第一行整個元素
printf("%d\n",sizeof(a[0]+1));? //4 --a[0]作為數(shù)組名并沒有單獨(dú)放在sizeof內(nèi)部止毕,也沒取地址
//a[0]就是第一行第一個元素的地址,
//a[0]+1就是第一行第二個元素的地址
printf("%d\n",sizeof(*(a[0]+1)));? //4 ---第一行第二個元素
printf("%d\n",sizeof(a+1));? ? ? ? //4 ---a是二維數(shù)組的數(shù)組名漠趁,并沒有取地址扁凛,
//也沒有單獨(dú)放在sizeof內(nèi)部,所以a表示二維數(shù)組首元素的地址闯传,
//即第一行的地址,a+1就是二維數(shù)組第二行的地址谨朝。
printf("%d\n",sizeof(*(a+1))); //16---第二行的大小
printf("%d\n",sizeof(&a[0]+1));? //4---a[0]表示第一行的數(shù)組名,&a[0]取出的是第一行的地址
//&a[0]+1就是第二行的地址
printf("%d\n",sizeof(*(&a[0]+1))); //16----第二行的大小
printf("%d\n",sizeof(*a));? ? ? ? ? //16---a表示第一行的地址 *a就是第一行{*(a+0)-->a[0]}
printf("%d\n",sizeof(a[3])); //16-----a[3]是第四行數(shù)組名(如果有的話)
//所以其實不存在甥绿,也能通過類型計算大小的字币。
return 0;
}