❶ c语言什么是外部变量是什么意思
外部变量是在函数外部定义的全局变量,它的作用域是从变量的定义处开始,到本程序文件的结尾。在此作用域内,全局变量可为各个函数所引用。编译时将外部变量分配在静态存储区。
有时要用extern来声明外部变量,以扩展外部变量的作用域。 也可用static声明外部变量,使该变量不能被其他文件引用。
用extern声明外部变量
extern可省略不写。
本文件里:在一个文件里,有不止一个函数,外部变量在第一个函数后面定义。若用extern在第一个函数前声明该变量则该变量可以在第一个函数中使用。
多个文件中:在其他文件中若想要用该文件中已声明的变量,则在文件头部声明该变量,即可在文件中使用。
用static声明外部变量
static声明后该外部变量就只能在本文件中使用。
❷ C语言在void函数中改变外部变量的值为什么无效啊
要注意变量的作用域
定义一个全局变量a
你在changValue(int a, int b)函数中有参数, 变量名也为a, 和全局变量同名, 在此函数中, 所有a变量均是参数传递来的, 并不是全局变量a
解决方法为 改变函数参数的变量名: changValue(int aaa, int b)
如果你不想用全局变量, 那么传送a的地址到函数中, 也可改变a的值
❸ C语言函数外部变量问题
int i;//声明全局变量 i
void prt();//声明无返回值函数 prt()
main() //主函数入口
{
for(i=0;i<5;i++) //
prt(); //循环 执行 5次prt()函数
}
void prt() //prt()函数主体
{ for(i=0;i<5;i++)
printf(“%c”,’*’); //循环 执行 5次输出"*"
printf(“\n”); //输出换行符
}
❹ c语言外部函数改变调用函数变量的问题
但是如果原变量是数组,好像不用指针也能完成改变。这是为什么---因为C语言数组作参数的时候是传的首地址,也相当于指针
入swap函数的是&a,&b, 而swap函数本身却是*a,*b,前面是实参,后面是形参,都是指针,完全不矛盾,声明的时候*表示指针,实际的值加&表示指针,不要被表象迷惑
❺ C语言外部变量和静态全局变量
int a:这是一个变量定义,就是说,在内存中分配了一段内存空间。然后告诉编译丛散器,这个变量,能在所有代码文件中被找到,被使用。
static int a:这是一个变量定义,就是说,在内存中分配了一段内存空间。然后告诉编译器,这个变量,只能在它本身所处的代码文件中被找到,被使用。
extern int a:这是一个声明,就是说,告诉编译器,听说有这么一个变量,我要使用,你去找找看。
在一个程序中,对于一个变量的名字:
定义只可以出现一次。
声明可以出现多次,只要神运每次出现的形式完渗瞎氏全一样。
❻ c语言中关于外部变量应用的问题
可以赋值到函数里的形参,但不改变实参的值。因为实参传给形参是值传递。形参是开辟新的地址接受实参传给的值。。改变时只改变形参(即这个函数里的变量)。函数外部传递值进来的变量不改变。。
❼ c语言如何让两个函数里的变量同时改变。
建议你在定义弊芦函数时先定义一个全局变量,这样在引用时可以通过悄卜辩改变这个变量启缺是的所有函数中的变量都能够改版
❽ C语言关于外部变量
一般不把这两句放在同一个源文件里。
第一个是一个变量的定义,第二个是变量的声明。
在文件a.c中定义一个USER login_user;但是在文件b.c中要用到这个全局变量,就采用声明的方法,extern USER login_user;来告诉编译器,我需要用一个变量login_user;但是这个变量已经在别的文件中定义了——就这个意思。
声明和变量定义的关系
一般在函数调用里面
int func1(int a,int b)
{......}
int func2(......)
{
......
int x=1;
int y=2
func(x,y);
......
}
上面的x和y就是定义。而a和b就是声明。
❾ 关于c语言外部变量的问题
int a = 0; //如果是全局变量,未初始化则自动初始化为0
int fun()
{
a=5;
}
int main()
{
fun();
}
你自己试一下不就知道了?全局变量的作用域是整个程序的生命周期。
比如C.c中
int a = 10;
main.c中
extern int a;
int fun()
{
a = 5;
}
main()
{
fun();
}
你自己试试吧。有不明确的就写代码自己确认。