(const T v) 在 C 中从来都不是必需的,对吗?
例如:
void func(const int i);
这里,const是不必要的,因为所有参数都是按值传递的(包括指针)。
这是真的吗?
For example:
void func(const int i);
Here,the const
is unnecessary since all parameters are passed by value(including pointers).
Is that true?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
C 中的所有参数确实都是按值传递,这意味着无论您是否包含 const,实际参数都不会改变。
然而,这并不意味着这里的 const 是“永远不需要的”。有必要还是没有必要取决于您想要实现的目标。
如果您想阻止任何修改函数内部参数的尝试,那么 const 当然是必要的。
有一个相当流行(而且相当合理)的编码指南,它规定函数参数永远不应在函数内部修改,即在函数执行的任何时刻,所有参数都必须保留其原始值。在此准则下,始终在所有参数声明中包含该
const
实际上是非常有意义的。All parameters in C are indeed passed by value, which means that the actual argument will not change regardless of whether you include that
const
or not.However, that does not mean that
const
here is "never necessary". Whether it is necessary or unnecessary depends on what you want to achieve.If you want to prevent any attempts to modify the parameter inside the function, then the
const
is necessary, of course.There is a fairly popular (and pretty reasonable) coding guideline that says that function parameters should never be modified inside the function, i.e. that at any point of function's execution all parameters must retain their original values. Under this guideline it would actually make perfect sense to always include that
const
in all parameter declarations.const 只是由预编译器使用,用于注意错误...
请注意,这是完全有效的:
所以它从来没有必要,但它只是使代码更具可读性,并通知您指针永远不应该改变...
const is just used by the precompiler, to notice about errors...
Note that this is perfectly valid:
So it's never necessary, but it just makes the code more readable, and informs you the pointer should never change...