个性化阅读
专注于IT技术分析

为什么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; 
}

由于效率, 数组参数被视为指针。就内存和时间而言, 复制阵列数据效率很低;在大多数情况下, 当我们传递数组时, 我们的意图只是告诉我们感兴趣的数组, 而不是创建数组的副本。

参考文献:

http://cslibrary.stanford.edu/101/EssentialC.pdf

赞(0)
未经允许不得转载:srcmini » 为什么C将数组参数视为指针?

评论 抢沙发

评论前必须登录!