【发布时间】:2020-06-01 04:43:44
【问题描述】:
我正在用 C 语言编程,我想将一个数组传递给一个函数;此函数不能修改数组的元素。函数参数的正确语法是什么?
void func(const Foo array_in[])
或
void func(Foo const array_in[])
或者它们可能是一样的? 谢谢。
【问题讨论】:
-
您不能将数组传递给函数,而是将指针传递给它的第一个元素。两种形式都是正确的,你可以使用任何一种。
-
请注意,使用
const限定参数类型只能帮助程序员避免无意中修改数组元素。如果他们故意将指针转换为非 const 类型并使用它来修改元素,C 标准允许这样做。所以这个声明不会给你函数不能修改数组元素的情况,只是建议或指示它不应该这样做的情况。 -
@hacks 好奇,回复:“您不能将数组传递给函数,而是将指针传递给它的第一个元素”。对于
printf("%f\n", 123.4f);,您是否还说不能将float传递给printf()? (假设float在调用之前转换为double。)
标签: c arrays pointers constants