在C语言中,数组参数被视为指针。以下foo()的两个定义看起来有所不同,但对于编译器而言,它们的含义完全相同。为了提高可读性,最好使用更准确的语法。如果传入的指针确实是整个数组的基地址,则应使用[]。
void foo(int arr_param[])
{
/* Silly but valid. Just changes the local pointer */
arr_param = NULL;
}
void foo(int *arr_param)
{
/* ditto */
arr_param = NULL;
}
由于效率,数组参数被视为指针。就内存和时间而言,复制阵列数据效率很低。在大多数情况下,当我们传递数组时,我们的意图只是告诉我们感兴趣的数组,而不是创建数组的副本。
肖比希特问
参考:
http://cslibrary.stanford.edu/101/EssentialC.pdf
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。