‘壹’ 如何在c语言中定义及引用全局变量
1、全局变量也称为外部变量,它是在函数外部定义的变量。
它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明。
只有在函数内经过说明的全局变量才能使用。全局变量的说明符为extern。
但在一个函数之前定义的全局变量,在该函数内使用可不再加以说明。外部变量是在函数外部定义的全局变量,它的作用域是从变量的定义处开始,到本程序文件的
结尾。在此作用域内,全局变量可为各个函数所引用。编译时将外部变量分配在静态存储区。
有时需要在其他文件中使用extern来声明外部变量,以扩展外部变量的作用域。
也可用static声明外部变量,使该变量不能被其他文件引用。有时候他们是一样的,只有稍微一点的区别而已,不用太过于区分的。
2、定义及引用方法:
#ifdef xxx_GLOBALS
#define xxx_EXT#else#define xxx_EXT extern
#endif 上面位于.H 文件中,每个全局变量都加上了xxx_EXT的前缀,xxx代表模块的名字。该模块的.C文件中有以下定义:#define xxx_GLOBALS
当编译器处理.C文件时,它强制xxx_EXT(在相应.H文件中可以找到)为空,(因为xxx_GLOBALS已经定义)。所以编译器给每个全局变量分配内存空间,而当编译器处理其他.C文件时,xxx_GLOBAL没有定义,xxx_EXT被定义为extern,这样用户就可以调用外部全局变量。进阶:在abc.H:#ifdef abc_GLOBALS
#define abc_EXT#else
#define abc_EXT extern#endif
abc_EXT unsigned int Ctr;
同时,abc.H有中以下定义:#define abc_GLOBALS
当编译器处理abc.C时,它使得头文件变成如下所示,因为abc_EXT被设置为空。unsigned int Ctr;
这样编译器就会将这些全局变量分配在内存中。当编译器处理其他.C文件时,头文件变成了如下的样子,因为abc_GLOBAL没有定义,所以abc_EXT被定义为extern。extern unsigned int Ctr;
在这种情况下,不产生内存分配,而任何 .C文件都可以使用这些变量。这样的就只需在 .H 文件中定义一次就可以了。
‘贰’ 在C语言中,一个文件中定义的 全局变量,在另一个文件中能用吗
能。因为全局变量默认是extern的,函数也是。如果你写了static修饰它就不行了
‘叁’ C语言中全局变量和外部变量的区别是什么
全局变量和外部变量是从不同角度对同样的变量的称呼
全局变量是相对于局部变量而言的,表示变量作用域没有限制,在任何函数内斗可以访问
外部变量一般都是全局变量,其实就是一个声明,表示在其他文件定义的一个变量,是在多文件编译情况下跨文件访问的必要手段
‘肆’ C语言头文件定义全局变量问题
1、首先,我们可以在函数外面定义变量,就是全局变量。
‘伍’ c语言 为什么静态全局变量可以在别的文件中引用
你要弄明白什么叫别的文件
比如
A 文件中定义了一个 static int i=0;
然后B文件用include包含了A文件,那么对于B文件来说,A文件就不是别的文件,它就是B文件的一部分
静态全局变量只能在本源文件中使用,意思是你不能用extern 来声明另外一个文件里的静态全局变量
比如 A文件里的static int i =0;
那么B文件里extren int i就是行不通的,而如果A文件的i不是static的 , 那么extern int i就可以
‘陆’ C语言中全局变量在其他文件中的引用
你指的不同c/cpp文件中的全局变量怎么再其他c/cpp文件内使用吗?
如果是的话,很简单,在其他c/cpp文件内使用extern再申明一次就可以了
‘柒’ 计算机c语言中如何定义全局变量
1、记住一条就够了:在函数之外定义的变量就是全局变量。用static修饰的变量可以是全局的,也可以是局部的,所以说“用static修饰的变量是全局变量”是错误的。用static修饰的变量的生命周期与全局变量一样,但可见性仍分全局和局部。
2、全局变量在整个c文件中都能使用,而局部变量在其作用域内才能使用,举个例子:
int f = 7;// 这个是全局变量
int myadd(int a, int b)
{
int c = a + b;// c是局部变量,只能在myadd中使用
return c;
}
int main(void)
{
printf("%d\n", c);// 因为c是myadd中定义的局部变量,这里会报错。
printf("%d\n", f);// f是全局变量,这句是正确的。
}
‘捌’ 怎样使C语言全局变量在多个文件中使用
extern 关键字x0dx0aextern int i;这样就可以在其他文件中使用x0dx0a在头文件中声明x0dx0aa.hx0dx0aextern int i;x0dx0a在其他某个c文件中定义x0dx0aint i =0;x0dx0a其他要使用i变量的c源文件只需要include"a.h"就可以
‘玖’ c语言中什么是全局变量怎样定义的变量是全局变量
全局变量是 指在整个程序中 ,任何位置都能访问它的变量。定义方式与局部变量基本一样,最大区别是定义的位置不一样。如int g_int;main(){。。。。。}对于工程中的其他文件,想访问这个全局变量可以用extern int g_int ;声明这样就可以用了
‘拾’ 如何设置一个跨文件全局变量
在C语言中引用外部变量,一般使用extern关键字。举个例子如下:
//1.c 中定义一个变量g_a
int g_a = 100;
//2.c 中定义一个函数输出g_a
#include
extern int g_a; //这里需要用extern说明g_a是一个外部全局变量
void f() {
printf("%d\n", g_a);
}
//3.c main函数中调用f()
void f(); //声明函数f()
int main()
{
f();
}
说明:在2.c中如果不使用extern关键字,则会出现编译错误提示。写入extern int g_a声明后,则编译成功。