我想问一下,这三种声明的差别是什么呢?
#include <iostream>
int sum1(int n) {
int s = 0;
while (n > 0) {
s++;
n--;
}
return s;
}
int input;
int sum2() {
int s = 0;
while (input > 0) {
s++;
input--;
}
return s;
}
int sum3() {
int s = 0;
for (int i = input; i > 0; i--)
s++;
return s;
}
int main() {
input = 5;
std::cout << sum1(input) << '\n';
std::cout << sum2() << '\n';
std::cout << sum3() << '\n';
}
变量的作用域不同
int sum1(int n)
这里函数形参n,属于局部变量,变量的作用域是整个函数的作用域呢,函数执行完毕返回后,会释放掉,只在函数内部可以使用
int input;
int sum2()
这里的input属于全局变量,在定义位置后面的所有函数内部都可以直接使用
int sum3() {
int s = 0;
for (int i = input; i > 0; i--)
这里for中的 int i 是一个局部变量, 作用域和for的作用域相同,只在for循环作用域内有效,循环退出后就释放掉了
使用上没啥区别,oop角度会引起不同程度的耦合