希望结果能够不让你大吃一惊哟。小程序也能够大智慧的。
#include<iostream> using namespace std; int main() { double* (*a)[3][6]; cout<<sizeof(a)<<endl; //4 a就是一个数组指针32位下是4字节 cout<<sizeof(*a)<<endl; // 72 *a就是数组总体 cout<<sizeof(**a)<<endl; // 24 **a就是二维数组的第一行这个一维数组 cout<<sizeof(***a)<<endl; // 4 ***a就是第一个元素里面是double* cout<<sizeof(****a)<<endl; // 8 ****a就是double这个类型 return 0; }
再看一个程序
我们都知道数组当形參的时候会降级为首元素的地址
int Sum(int (*i)[6])//数组指针 { int sumofi = 0; for(int j = 0; j < sizeof(*i)/sizeof(**i); j++) //sizeof(*i) = 24 { //sizeof(*i)/sizeof(int) sumofi += (*i)[j]; } return sumofi; } int Sum2(int (&i)[6])//数组引用 { int sumofi = 0; for(int j = 0; j < sizeof(i)/sizeof(*i); j++) //sizeof(i) = 24 { ////sizeof(i)/sizeof(int) sumofi += i[j]; } return sumofi; } int main() { int allAges[] = {1, 2, 3, 4, 5, 6}; cout<<Sum(&allAges)<<endl; cout<<Sum2(allAges)<<endl; return 0; }