变量作用域

代码结构分析

#include <stdio.h>
int a[5]={7,10,3};
int n=3;
int *p=a;
void main()
{
int i;
int a[2]={1,0};
for(i=0;a[i];i++)
printf("%4d",a[i]);
for(i=0;a[i];i++)
{
int a[3]={100,200,300};
printf("%4d",a[i]);
}
printf("\n");
}

关键概念:变量作用域

这个程序的核心是理解变量作用域和局部变量覆盖全局变量。

逐步执行分析

1. 全局变量定义

- int a[5]={7,10,3}; - 全局数组,后两个元素自动初始化为0
- int n=3; - 全局变量
- int *p=a; - 全局指针指向数组a

2. main函数内执行

局部变量定义:
- int a[2]={1,0}; - 局部数组覆盖全局数组,在main函数内a指向这个局部数组

第一个for循环:
for(i=0;a[i];i++)
printf("%4d",a[i]);
- 使用局部数组a[2]={1,0}
- i=0: a[0]=1,输出" 1"
- i=1: a[1]=0,条件a[1]为假,循环结束

第二个for循环:
for(i=0;a[i];i++)
{
int a[3]={100,200,300};
printf("%4d",a[i]);
}
- 关键点:循环条件a[i]使用的是main函数的局部数组{1,0}
- 但是:循环体内又定义了新的局部数组{100,200,300}
- i=0: 条件a[0]=1(main的局部数组),进入循环体,输出a[0]=100(循环体内的数组)
- i=1: 条件a[1]=0(main的局部数组),循环结束

程序输出

1 100

总结

这个程序展示了C语言中变量作用域的重要概念:
1. 局部变量会覆盖同名的全局变量
2. 内层作用域的变量会覆盖外层作用域的同名变量
3. 在for循环的条件判断和循环体中,可能使用不同作用域的同名变量

posted @ 2025-08-24 21:49  量子我梦  阅读(20)  评论(0)    收藏  举报