【函数】变量的作用域

先来看段代码
int count = 0;
void test1();
void test2();

int main(void){
int count = 0;
for(;count < 3; ++count){
test1();
test2();
}
}

void test1(){
printf("test1 %d\n", count++);
}

void test2(){
static int count = 0;
printf("test2 %d\n", count++);
}
运行的结果是:
test1 1
test2 1
test1 2
test2 2
test1 3
test2 3
结果为什么是这样呢?
这段代码定义了3个名为count的变量,全局变量count, main函数内的自动变量count, test2内的静态变量count。由于main内的count与全局变量同名,全局变量被隐藏,main函数域内只认自动变量count,控制着循环。test1函数内的count是全局变量,跟main没关系。test2函数内的count是自己的静态变量,跟全局变量和main的自动变量都没关系。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容