首页 > 解决方案 > 多维数组作为函数参数的衰减

问题描述

我知道,例如:

void foo(int a[])// or a[x]

编译器会这样考虑:

void foo(int *a)

但我不知道,我也没有发现编译器如何看到多维数组

例如:

void foo(int a[3][4])

会是这样吗?

void foo(int (*a)[4])

还是这样的?

void foo(int **a)

标签: cmultidimensional-array

解决方案


当数组衰减时,它会转换为指向第一个元素的指针。在 的情况下int a[3][4]a是 的数组int[4],因此指向元素的指针int [3][4]具有 类型int (*)[4]

所以这:

void foo(int a[3][4])

是相同的:

void foo(int (*a)[4])

推荐阅读