写空虚乐趣(int * tab);和void fun(int tab [])是一样的吗?

时间:2013-11-02 16:48:41

标签: c++ arrays

与主题标题一样。我写的时候:void fun(int *tab){}和写void fun(int tab[]){}一样吗?

3 个答案:

答案 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 ...这实际上是通过引用调用..