与主题标题一样。我写的时候:void fun(int *tab){}
和写void fun(int tab[]){}
一样吗?
答案 0 :(得分:3)
是
void fun(int *tab){}
void fun(int tab[]){}
void fun(int tab[10]){} //whatever the size is
与编译器完全相同。具有或不符合大小的数组在作为函数参数传递时衰减为指针。
在实践中,避免使用最后一个,因为它可能意味着函数已知大小,而实际上并非如此。
答案 1 :(得分:2)
是的,不,第二个版本不会让你弄清楚函数内部数组的大小。它仍然衰减到一个指针。 :)
答案 2 :(得分:1)
是的,它是相同的..无论你在程序中声明一个数组说int tab [],如果你想将该数组传递给其他函数,那么你实际上传递了该数组的基地址,即& tab [0],由你在函数中用作参数的指针指向,int * tab ...这实际上是通过引用调用..