5.2 作用域与存储
作用域描述一个名字可以在哪些位置使用。函数内部声明的变量,只在这个函数内部可见。
cpp
int add(int a, int b) {
int total = a + b;
return total;
}
int main() {
// 这里不能使用 total
return 0;
}参数也是局部变量。C++ 普通参数按值传递,也就是函数收到的是实参的副本。
cpp
void change(int x) {
x = 100;
}
int main() {
int number = 5;
change(number);
std::cout << number << std::endl; // 仍然是 5
return 0;
}因此,如果参数按值传递,一个简单的交换函数不会改变调用者中的变量。
cpp
void swap_values(int a, int b) {
int temp = a;
a = b;
b = temp;
}如果要直接改变调用者的变量,C++ 常用引用。后面会继续学习引用,现在先认识它的写法。
cpp
void swap_values(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}static 局部变量只初始化一次,并且会在多次函数调用之间保留自己的值。
cpp
void count_calls() {
static int count = 0;
count++;
std::cout << count << std::endl;
}默认优先使用局部变量。这样每个函数只管理自己的临时工作,程序会更容易推理。
正在加载概念检查...
正在加载本节练习...