【发布时间】:2016-10-25 05:31:20
【问题描述】:
很多人说如果没有提供列大小,编译器就不会知道大小信息。但是编译器如何知道行大小?为什么不能解释列大小?
【问题讨论】:
-
你说的是什么语言?
-
我说的是c,
-
是的,我以前看过那个帖子。但这让我失去了......
很多人说如果没有提供列大小,编译器就不会知道大小信息。但是编译器如何知道行大小?为什么不能解释列大小?
【问题讨论】:
在将数组作为参数传递给函数时,编译器会隐式地将数组引用转换为指针。在一维数组的情况下可以清楚地看到这一点,比如
int method(int *a)
int method(int a[])
这两行在这里是等价的(尽管指针和数组引用不同),因为每当数组出现在表达式中时,编译器都会隐式生成指向数组第一个元素的指针,就像程序员写了 &a[0] .然而,这条规则不是递归的,即传递一个二维数组被视为指向数组的指针,而不是指向指针的指针。
int method(int b[3][5]);
转换为
int method(int (*b)[5]);
由于被调用的函数没有为数组分配空间,所以行的大小并不重要,但是列的大小对于提供数组的大小仍然很重要。如需进一步参考,您可以访问here。
【讨论】: