gpt4 book ai didi

C - 对于非指针函数的参数中的 const 用户有何优势?

转载 作者:太空狗 更新时间:2023-10-29 17:08:49 29 4
gpt4 key购买 nike

我想知道在调用像这样的函数时对用户是否有任何好处

A) void func(int i);

或者类似的函数

B) void func(const int i);

因为在 func 内部,参数 i 无论如何都会被复制到堆栈(或编译器在其优化中选择的任何地方),对于调用此函数的用户来说,A 和 B 之间没有区别。

所以如果一个工具是这样的:

A)

void func(int i)
{
i = another_func(i);
printf("%d", i);
}

或者使用const

B)

void func(const int i)
{
int j = another_func(i);
printf("%d", j);
}

我的问题:

实现 B 有什么优势?编译器可以执行任何类型的优化 ?A 和 B 只是一个简单的例子,这些问题对其他情况也有效。

我明白在指针中使用 const 的好处(例如 const void *data),因为我们告诉用户我们不会修改它的内容,但我不明白 const 的用法,除了警告程序员他不应该修改它的功能,但在我看来,在 API 头文件中使用 const 是没有用的。

感谢您的帮助。

最佳答案

这里有些人说,如果您不更改变量,则应该编写 const - 因为您可以声明任何局部变量 const。 (主要目的是防止你不小心改变变量,也可能帮助编译器优化你的代码)

其他人说你不应该声明函数参数 const,因为它会暴露 API 中的一些实现。

我觉得他们都对!这就是为什么您可以在函数声明中省略 const 的原因:您可以在 header 中编写 void func(int);,但要实现它 void func(const int i) {} 在代码文件中。

关于C - 对于非指针函数的参数中的 const 用户有何优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17133103/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com