在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++; } 

所以它永远不必要,但它只是让代码更具可读性,并通知你指针永远不会改变……