經(jīng)典問題:
double* (*a)[3][6];
cout<<sizeof(a)<<endl; // 4 a為指針
cout<<sizeof(*a)<<endl; // 72 *a為一個(gè)有3*6個(gè)指針元素的數(shù)組
cout<<sizeof(**a)<<endl; // 24 **a為數(shù)組一維的6個(gè)指針
cout<<sizeof(***a)<<endl; // 4 ***a為一維的第一個(gè)指針
cout<<sizeof(****a)<<endl; // 8 ****a為一個(gè)double變量
問題解析:a是一個(gè)很奇怪的定義,他表示一個(gè)指向double*[3][6]類型數(shù)組的指針。既然是指針,所以sizeof(a)就是4。
既然a是執(zhí)行double*[3][6]類型的指針,*a就表示一個(gè)double*[3][6]的多維數(shù)組類型,因此sizeof(*a)=3*6*sizeof(double*)=72。同樣的,**a表示一個(gè)double*[6]類型的數(shù)組,所以sizeof(**a)=6*sizeof (double*)=24。***a就表示其中的一個(gè)元素,也就是double*了,所以sizeof(***a)=4。至于****a,就是一個(gè)double了,所以sizeof(****a)=sizeof(double)=8