(const T v) 在 C 中从来都不是必需的,对吗?

发布于 2024-10-25 05:43:18 字数 118 浏览 1 评论 0原文

例如:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

丘比特射中我 2024-11-01 05:43:18

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.

绅士风度i 2024-11-01 05:43:18

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

请注意,这是完全有效的:

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

    baz++;
}

所以它从来没有必要,但它只是使代码更具可读性,并通知您指针永远不应该改变...

const is just used by the precompiler, to notice about errors...

Note that this is perfectly valid:

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

    baz++;
}

So it's never necessary, but it just makes the code more readable, and informs you the pointer should never change...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文