在 Deitel 的《C 语言编程》第 9 版(第 7 章)中,函数声明为
void bubbleSort(int * const array, size_t size)
并且在文本中指定“函数bubbleSort
的标头声明array
为int * const array
而不是 以int array[]
指示bubbleSort
接收一维数组参数。同样,这些符号可以互换;但是,数组符号通常更易于阅读”。由于“数组名称是指向数组第一个元素的常量指针”(引自同一章),并且由于指向非常量数据的常量指针(例如)用 定义int * const myPtr
,因此在处理数组时, array
asint * const array
等同于更紧凑的数组符号是有道理的。
然而,在同一章关于指针的开头,作者指出“当编译器遇到形式为的一维数组的函数参数时int b[]
,编译器会将该参数转换为指针表示法int *b
。这两种形式可以互换”。
因此,根据作者的说法,int * const array
和都int *array
等同于int array[]
。const
如果它们是数组名称,并且根据定义指向数组第一个元素的常量指针,为什么要添加关键字?或者当数组传递给函数时情况是否如此?