其实对于通俗的全局变量和局部变量,有一个很通俗易懂的界定,在函数之外的为全局变量,在函数之内的局部变量。需要特别注意的是main()也是函数,从这个角度来看所有函数都是平等的,只是main()函数具有执行优先级的特性。
在这里我想说一说一些特殊的情况
#include <iostream> using namespace std; int main() { for(int i = 0; i < 5; i++) { cout << i << endl; int j = 0; } cout << i << endl; //true or false cout << j << endl; //true or false return 0; }
运行结果:
这说明for()括号的变量只在对应{}内部有效,并且{}内部定义的变量只在对应{}内部有效。
答案是肯定的
#include <iostream> using namespace std; int a = 5; int main() { for(int i = 0; i < 5; i++) { cout << i << endl; int j = 0; a = 0; } //cout << i << endl; //cout << j << endl; cout << a << endl; return 0; }
运行结果:
答案是有的,虽然局部指针变量最终会被销毁,但是其发挥的作用是有效的,这一点与一般的局部变量不同,原因是指针是基于地址来操作的。
#include <iostream> using namespace std; int a = 5, b = 10; int *p_a = &a; int main() { *p_a = 4; for(int i = 0; i < 5; i++) { static int *p_b = &b; *p_b = 8; } cout << a << endl; //4 cout << *p_a << endl; //4 cout << b << endl; //8 cout << *p_b << endl; //wrong return 0; }