全局变量和实参重名调两次
时间: 2024-08-12 11:08:46 浏览: 48
全局变量和局部变量重名时,当在同一作用域内发生调用时,通常会优先使用局部变量的值。这是因为函数内部的局部变量具有更高的优先级,它们的作用范围仅限于函数内部。
全局变量(global variable)是在程序的整个执行期间都存在的变量,无论在哪里定义,都可以在程序的任何地方被访问。如果你在函数中也声明了一个同名的局部变量,当你在该函数内部访问这个变量时,你会使用局部变量的值,除非你在函数内部明确指定了使用全局变量。
例如:
```cpp
int globalVar = 10; // 全局变量
void func() {
int localVar = 20; // 局部变量,与全局变量同名
// 在函数内部,使用的是局部变量localVar的值
std::cout << localVar; // 输出20
}
func();
std::cout << globalVar; // 输出10,因为全局变量没有在函数内被覆盖
```
如果你在函数内部需要访问全局变量,必须使用 `globalVar` 这个关键字,或者使用 `::` 操作符来明确指定:
```cpp
std::cout << ::globalVar; // 使用全局变量
```
相关问题
c 语言形参与实参重名
在C语言中,形参和实参可以重名。当函数被调用时,实参的值会被传递给形参,形参会在函数内部被当做变量来使用。如果形参和实参重名,那么在函数内部使用该变量时,会优先使用形参的值。例如:
```c
#include <stdio.h>
void func(int num) {
printf("形参num的值为:%d\n", num);
}
int main() {
int num = 10;
func(num); // 调用函数
return 0;
}
```
在上面的例子中,函数`func`的形参为`num`,在`main`函数中定义了一个变量`num`并将其值赋为10,然后调用`func`函数并将`num`作为实参传递给`func`函数。在`func`函数内部,使用`num`变量时会优先使用形参`num`的值,因此输出结果为“形参num的值为:10”。
问下C里面声明定义全局变量之后直接在函数里使用和作为实参传入函数是不是一样的没有影响
在C语言中,全局变量的作用域为整个程序,可以在任何函数中使用。所以,无论是在函数内部直接使用全局变量,还是将全局变量作为实参传递给函数,在函数中使用的效果都是一样的,不会有影响。但是,需要注意的是,在函数中直接使用全局变量可能会影响程序的可读性和可维护性,因为全局变量的值可能会被多个函数修改,导致程序难以调试和维护。因此,建议在函数中尽量使用局部变量,只在必要的情况下使用全局变量。
阅读全文