在C中永远不需要(const T v)吗?

时间:2011-03-22 01:29:16

标签: c const

例如:

void func(const int i);

这里,const是不必要的,因为所有参数都是按值传递的(包括指针)。

这是真的吗?

2 个答案:

答案 0 :(得分:4)

C中的所有参数确实是按值传递的,这意味着无论是否包含const,实际参数都不会改变。

但是,这并不意味着const这里“永远不必要”。是否必要或不必要取决于您想要实现的目标。

如果你想阻止任何修改函数内部参数的尝试,那么当然需要const

有一个相当流行(并且非常合理)的编码指南,即在函数内部不应修改函数参数,即在函数执行的任何点,所有参数都必须保留其原始值。根据此指南,始终所有参数声明中包含const实际上是完全合理的。

答案 1 :(得分:1)

const只是由预编译器使用,以注意错误...

请注意,这完全有效:

void foo( const char * bar )
{
    char * baz = ( char * )bar;

    baz++;
}

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