考虑以下玩具程序的输出:
void fun(int arr[][3]) {
cout<<sizeof arr;
}
int main() {
int arr[5][3];
cout<< sizeof arr<<" ";
func(arr);
}
由于指针衰减在2D数组中只发生一次,我期待输出为 60 12 如 5 * 3 * 4和3 * 4.
但输出是 60 4 谁能解释发生了什么?
答案 0 :(得分:2)
in fun()
arr[][3]
arr是指向3个整数数组的指针。所以输出是指针的大小。
答案 1 :(得分:1)
void fun(int arr[][3]);
void fun(int (*arr)[3]);
以上是相同的。换句话说,arr
是指向int[3]
的指针。所以它有一个指针的大小,在你的情况下恰好是4个字节。