赞
踩
目录
我们之前了解了,本地变量这个说法,也就是定义在函数内部的变量。与之对应的就是定义在函数外的变量——全局变量。
- const int gALL = 12;
- int g2 = gALL;
-
- int main()
- {}
如果函数内部有全局变量同名变量,那么全局变量会被隐藏
优先级是函数内部的优先级高(隐藏),离开了函数(现身)就回到了原来的值
例子:
- int f(void)
- {
- int all = 1;
- //普通本地变量
- printf("all = %d\n",all);
- all+=2;
- printf("all now = %d\n",all);
- return all;
- }
- //当函数里的是普通本地变量,三次调用输出六次值,分别为1 3 1 3 1 3
- #include<stdio.h>
- int f(void);
- int gALL=12;
-
- int main()
- {
- f();
- f();
- f();
- return 0;
- }
-
- int f(void)
- {
- static int all = 1;
- //静态本地变量 初始化动作只做了一次
- printf("all = %d\n",all);
- all+=2;
- printf("all now = %d\n",all);
- return all;
- }
- //当函数内为静态本地变量,三次调用,六次输出值,分别为:
-
- 1 3 3 5 5 7,每次传入函数,其值都相对全局改变
- #include<stdio.h>
- int* f(void);
- void g(void);
-
- int main()
- {
- int *p = f();
- printf("*p = %d",*p);
-
- g();
- printf("*p = %d",*p);
-
- return 0;
- }
-
- int* f(void)
- {
- int i = 12;
- return &i;
- }
-
- void g(void)
- {
- int k = 24;
- printf("k=%d\n",k);
- }
// 如果在各自函数内打印i和k的地址,会发现二者地址一样
//也就是说,函数结束后的本地变量的内存空间会继续分配给别的变量使用
//房子你都收回去了,业主要把它租给别人了,留着钥匙没有用
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。