指针在2D数组中衰减后的大小

时间:2014-04-17 14:30:16

标签: c++ c arrays

考虑以下玩具程序的输出:

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 谁能解释发生了什么?

2 个答案:

答案 0 :(得分:2)

in fun()

arr[][3]

arr是指向3个整数数组的指针。所以输出是指针的大小。

答案 1 :(得分:1)

void fun(int arr[][3]);

void fun(int (*arr)[3]);

以上是相同的。换句话说,arr是指向int[3]的指针。所以它有一个指针的大小,在你的情况下恰好是4个字节。