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