在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
评论前必须登录!
注册