gpt4 book ai didi

c++ - 在实现和调用时可以复制函数参数名称吗?

转载 作者:行者123 更新时间:2023-11-28 05:03:24 24 4
gpt4 key购买 nike

如果我有

#include <iostream>
int fun(int,int);

int main(void)
{
int foo=3;
int bar=5;
std::cout << fun(foo,bar);
}

int fun(int foo, int bar){ return foo+bar; }

关于冲突的名称 foobar,一个在函数定义中,一个在主程序主体中,是否(可能)混淆(由人或编译器!) ?到目前为止,我发现结果都是正确的,但最好了解最佳实践。事实上,我经常会失去想象力,将这两个事件(如示例中的)命名为相同的。

(多年来我一直想知道这个问题;这是非常基本的,我相信在 SO 的悠久历史中一定有人问过,但我现在找不到任何问题。如果重复,请务必告诉我。)

最佳答案

对于编译器来说,每个变量都与语言标准定义的范围相关联,因此不能存在任何误解的情况。如果在编译器无法确定变量范围的情况下,则会引发不明确的编译错误。

示例:名称相同,但作用域不同。

int x = 10;

void func() {
// the definition of local x below hides global x in current scope
int x = x; // local x is assigned value of global x
x = 5; // local x is assigned 5, this does not affect global x
printf("local x = %d\n", x);
}

int main() {
func();

printf("global x = %d\n", x);

return 0;
}

要了解编译器如何处理名称相同但作用域不同的变量,请阅读 How does a C compiler differentiate a local and a global variable of the same name?

对人类来说,这叫做命名约定。您可以自由使用任何有效名称来命名您的变量,但建议您遵循一些一致的规则 - 这将使您的代码更具可读性和可维护性。

关于c++ - 在实现和调用时可以复制函数参数名称吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45378178/

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