📜  为什么C将数组参数视为指针?

📅  最后修改于: 2021-05-25 23:30:47             🧑  作者: Mango

在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基础课程》。