最佳答案
因为当传递给函数时,数组衰减 为指针。如果您不提供数组第二维的基数,编译器将不知道如何取消引用该指针。
这里有一个更长的解释:当你写这篇文章的时候
p[index]
编译器执行一些指针运算来找到它需要引用的元素的地址:它将 index
乘以 p
的元素的大小,然后加上它到p
的基地址:
address = <base address of p> + index * <size of p's element>
当您尝试传递这样的数组 p[][]
时,编译器只知道 p
的基地址,但不知道其元素的大小。为了让编译器知道 p
元素的大小,您需要提供第二维的基数。
关于c - 为什么传递给函数的二维数组需要它的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20523665/