为什么C将数组参数视为指针()

在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; }

由于效率, 数组参数被视为指针。就内存和时间而言, 复制阵列数据效率很低;在大多数情况下, 当我们传递数组时, 我们的意图只是告诉我们感兴趣的数组, 而不是创建数组的副本。
参考文献:
【为什么C将数组参数视为指针()】http://cslibrary.stanford.edu/101/EssentialC.pdf

    推荐阅读