0

如主题标题。当我写作时:void fun(int *tab){}它和写作一样void fun(int tab[]){}吗?

4

3 回答 3

3

是的。

void fun(int *tab){}
void fun(int tab[]){}
void fun(int tab[10]){}  //whatever the size is

对编译器来说都是一样的。当作为函数参数传递时,无论大小与否,数组都会衰减为指针。

在实践中,避免使用最后一个,因为它可能暗示函数的大小是已知的,而实际上它不是。

于 2013-11-02T16:53:22.177 回答
2

是的,不,第二个版本不会让您计算出函数内数组的大小。它仍然衰减为指针。:)

于 2013-11-02T16:49:55.237 回答
1

是的,它是一样的..每当您在程序中声明一个数组时说 int tab[].. 如果您想将该数组传递给其他函数,那么您实际上传递了该数组的基地址位置,即 &tab[0],它由您在函数中用作参数的指针指向,int *tab ...这实际上是通过引用调用的..

于 2013-11-02T17:16:26.520 回答