2019-05-04 09:19发布
#include <stdio.h>
int x=10;
void test()
{
x=20;
}
void test2()
printf("%d\n",x);
void main()
test();
test2();
//据我所知。局部变量,有效范围在当前的局部变量到大括号消失。照理应该不影响其他自定义函数了。但为什么x的值还是20?
因为你对X超作了,赋予新值20,所以是20
你的test 里面没有用局部变量啊?直接全局用x,如果test(){int x=10;}就是你希望的。
你这个 x的定义不就是全局变量吗,后面所有的函数都可以对它操作
x=20;-----应该为 test() {int x=20;}
因为你直接使用了全局赋值,所以不管局部如何变化,结果还是全局20哦!
赋予新值20
静态局部变量通常放在函数内部,只能在函数内部,只进行一次初始化,每次执行函数时保持上一次执行时的值,如下代码所示:void func() {static int x = 0; // 在对func的三次调用中,x只进行一次初始化printf("%d\n", x); // 输出x的值x = x + 1;}int main(int argc, char * const argv[]) {func(); // 输出0func(); // 输出1func(); // 输出2return 0;}静态全局变量是在全局变量前加一个static,使该变量只在这个源文件中可用,称之为全局静态变量,全局静态变量就是静态全局变量。在多文件组成的程序里,全局变量与全局静态变量是不同的。全局静态变量使得该变量成为定义该变量的源文件所独享,使它文件不能使用。
最多设置5个标签!
因为你对X超作了,赋予新值20,所以是20
你的test 里面没有用局部变量啊?直接全局用x,如果test(){int x=10;}就是你希望的。
你这个 x的定义不就是全局变量吗,后面所有的函数都可以对它操作
{
x=20;-----应该为 test() {int x=20;}
}
因为你直接使用了全局赋值,所以不管局部如何变化,结果还是全局20哦!
赋予新值20
静态局部变量通常放在函数内部,只能在函数内部,只进行一次初始化,每次执行函数时保持上一次执行时的值,如下代码所示:void func() {static int x = 0; // 在对func的三次调用中,x只进行一次初始化printf("%d\n", x); // 输出x的值x = x + 1;}int main(int argc, char * const argv[]) {func(); // 输出0func(); // 输出1func(); // 输出2return 0;}静态全局变量是在全局变量前加一个static,使该变量只在这个源文件中可用,称之为全局静态变量,全局静态变量就是静态全局变量。在多文件组成的程序里,全局变量与全局静态变量是不同的。全局静态变量使得该变量成为定义该变量的源文件所独享,使它文件不能使用。
一周热门 更多>