C语言变量/函数的作用域

匿名 (未验证) 提交于 2019-12-03 00:09:02

C语言常见问题

问题:
在学习Java语言的时候,会用一节讲java语言的作用域,但是C语言却没有。那么C语言有作用域么,和java语言有什么区别?

代码1 (我们常这样写)

#include <stdio.h> //代码1 int main(int argc, char *argv[]){     int i = 20;          for(int i = 0; i < 5; i++)     {//在for里面初始化一个i,和main里面的不同。         printf("i = %d\n", i);     }          return 0; } 

运行结果
bao:day0920 bao$ gcc -o test1 test1.c
bao:day0920 bao$ ./test1
i = 0
i = 1
i = 2
i = 3
i = 4

代码2

#include <stdio.h> //代码2 int main(int argc, char *argv[]){     int i = 20;//在main函数初始化一个变量i;     for(i = 0; i < 5; i++)     {//在for的作用域里面,将main的i再次赋值为0;         printf("i = %d\n", i);     }          return 0; } 

运行结果
bao:day0920 bao$ gcc -o test1 test1.c
bao:day0920 bao$ ./test1
i = 0
i = 1
i = 2
i = 3
i = 4

代码3

#include <stdio.h> //代码3 int main(int argc, char *argv[]){     int i = 2;     for(i; i < 5; i++)     {//这里的i 就是main函数里面初始化的i,但是for里面的第一个i没有进行任何“使用”         printf("i = %d\n", i);     }          return 0; } 

运行结果
bao:day0920 bao$ gcc -o test1 test1.c
test1.c:5:9: warning: expression result unused [-Wunused-value]
for(i; i < 5; i++)
^
1 warning generated.
bao:day0920 bao$ ./test1
i = 2
i = 3
i = 4

代码4

#include <stdio.h>  int main(int argc, char *argv[]){     int i = 2;     for(; i < 5; i++)     {//这里的i 就是main函数里面初始化的i         printf("i = %d\n", i);     }          return 0; } 

运行结果
bao:day0920 bao$ gcc -o test1 test1.c
bao:day0920 bao$ ./test1
i = 2
i = 3
i = 4

!!!我的编译环境Mac ,VSCode (代码编译器)

通过代码1、代码2、代码3 、代码4 主要就是想说一下C语言变量的作用域等的问题。

如果还是不理解,我就再来个最终版,(把问题放大)。。
代码

#include <stdio.h>  int main(int argc, char *argv[]){     //作用域main     int i = 2;     printf("i = %d\n", i);          {//作用域A     	printf("i = %d\n", i);         int i = 5;         printf("i = %d\n", i);     }          return 0; } 

运行结果
bao:day0920 bao$ gcc -o test2 test2.c
bao:day0920 bao$ ./test2
i = 2
i = 2
i = 5

不解释了,很清晰了。
java语言可以任意调用不同作用域里面的。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!