例如:
void func(const int i);
这里,const
是不必要的,因为所有参数都是按值传递的(包括指针)。
这是真的吗?
答案 0 :(得分:4)
C中的所有参数确实是按值传递的,这意味着无论是否包含const
,实际参数都不会改变。
但是,这并不意味着const
这里“永远不必要”。是否必要或不必要取决于您想要实现的目标。
如果你想阻止任何修改函数内部参数的尝试,那么当然需要const
。
有一个相当流行(并且非常合理)的编码指南,即在函数内部不应修改函数参数,即在函数执行的任何点,所有参数都必须保留其原始值。根据此指南,始终在所有参数声明中包含const
实际上是完全合理的。
答案 1 :(得分:1)
const只是由预编译器使用,以注意错误...
请注意,这完全有效:
void foo( const char * bar )
{
char * baz = ( char * )bar;
baz++;
}
所以它永远不必要,但它只是让代码更具可读性,并通知你指针永远不会改变......