本帖最后由 张家伟2014 于 2014-6-8 23:16 编辑
- #include <stdio.h>
- int main()
- {
- int a = 0; // 在当前内存块(main)中定义一个变量a(第1个a),值为0.
- {
- //在上一级内存块(main)中开辟出一块内存(第1块内存).
- a = 10; // 先在当前内存块(第1块内存)中寻找a,没找到,再去上一级内存块(main)中寻找a,找到后将10赋值给a(第1个a).
- printf("%d\n",a); // 先在当前内存块(第1块内存)中寻找a,没找到,再去上一级内存块(main)中寻找a,找到后打印a(第1个a),结果:10.
- int a = 12; // 在当前内存块(第1块内存)中定义一个变量a(第2个a),值为12.
- printf("%d\n",a); // 先在当前内存块(第1块内存)中寻找a,找到后打印a(第2个a),结果:12.
- {
- //在上一级内存块(第1块内存)中开辟出一块内存(第2块内存).
- a = 30; // 先在当前内存块(第2块内存)中寻找a,没找到,再去上一级内存块(第1块内存)中寻找a,找到后将30赋值给a(第2个a).
- printf("%d\n",a); // 先在当前内存块(第2块内存)中寻找a,没找到,再去上一级内存块(第1块内存)中寻找a,找到后打印a(第2个a),结果:30.
- int a = 40; // 在当前内存块(第2块内存)中定义一个变量a(第3个a),值为40.
- printf("%d\n",a); // 先在当前内存块(第2块内存)中寻找a,找到后打印a(第3个a),结果:40.
- a = 50; // 先在当前内存块(第2块内存)中寻找a,找到后将50赋值给a(第3个a).
- printf("%d\n",a); // 先在当前内存块(第2块内存)中寻找a,找到后打印a(第3个a),结果:50.
- }
- //系统回收了上一级内存块(第2块内存),第3个a也不存在了.
- printf("%d\n",a); // 先在当前内存块(第1块内存)中寻找a,找到后打印a(第2个a),结果:30.
- a = 20; // 先在当前内存块(第1块内存)中寻找a,找到后将20赋值给a(第2个a).
- printf("%d\n",a); // 先在当前内存块(第1块内存)中寻找a,找到后打印a(第2个a),结果:20.
- }
- //系统回收了上一级内存块(第1块内存),第2个a也不存在了.
- printf("%d\n",a); // 先在当前内存块(main)中寻找a,找到后打印a(第1个a),结果:10.
- a = 70; // 先在当前内存块(main)中寻找a,找到后将20赋值给a(第1个a).
- printf("%d\n",a); // 先在当前内存块(main)中寻找a,找到后打印a(第1个a),结果:70.
- return 0;
- }
复制代码
|