c语言中全局变量在不同文件中的引用

c语言中全局变量在不同文件中的引用

c语言中在某个文件中定义的全局变量可以在不同的文件中引用,对数组和指针这两种全局变量在使用时必须要注意,外部引用格式不正确时会出现编译或运行错误。下面通过不同的例子来说明数组和指针类型全局变量的引用。
一、全局变量为数组

example1:

test1.c  
int a[10] = {1,2,3,4,5};  
 
test2.c  
#include <stdio.h>  
#include <stdlib.h>  
extern int a;  
int main()  
{  
    printf("%d\n", a[2]);  
    return 0;  
} 

编译时会出现下面错误,说明在test2中的extern引用的a实际上是一个变量,而不是一个数组,在第10行会出现编译错误。

error: subscripted value is neither array nor pointer  

example2:

test1.c:  
int a[10] = {1,2,3,4,5};  
 
test2.c:  
#include <stdio.h>  
#include <stdlib.h>  
extern int a[];  
int main()  
{  
    printf("%d\n", a[2]);  
    return 0;  
} 

此例编译和运行都没有任何问题,运行结果为3。说明extern引用的a就是在test1.c中定义的数组。

example3:

test1.c:  
int a[10] = {1,2,3,4,5};  
 
test2.c:  
#include <stdio.h>  
#include <stdlib.h>  
extern int *a;  
int main()  
{  
    printf("%d\n", a[2]);  
    return 0;  
} 

此例在编译时没有任何问题,但是运行时会出现野指针访问错误,因为此处a被认为是外部定义的一个指针变量,但是这个指针变量并没有指向某个对象,所以在运行过程中会出现随机访问内存的情况。
转发链接:https://blog.51cto.com/coldcloudy/970380

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 C 语言,如果你想设置一个全局变量,你需要在程序的某个地方使用关键字 `extern` 来声明这个变量。例如: ``` extern int global_variable; ``` 这样,你就声明了一个名为 `global_variable` 的全局变量。但是,这样声明的变量是没有赋值的,所以它的初始值是不确定的。 如果你想为这个全局变量赋值,你需要在程序的某个地方使用一个变量定义来定义这个变量。例如: ``` int global_variable = 10; ``` 这样,你就定义了一个名为 `global_variable` 的全局变量,并且为它赋值为 10。 在 C 语言全局变量的作用域是整个程序,它可以在程序的任何地方使用。但是,由于它在整个程序都可以被访问,所以在使用全局变量时要格外小心,避免引起不必要的麻烦。 ### 回答2: 在C语言全局变量是在函数之外声明的变量,它可以在整个程序被访问和使用。 要声明一个全局变量,我们需要在函数之外的任何位置进行声明,通常在所有函数的上方。全局变量的声明要使用关键字"extern"来修饰,这是为了让编译器知道该变量是全局的。 全局变量可以在程序的任何地方使用,包括函数内部和函数之间。当在函数内部使用全局变量时,我们无需再次声明该变量,直接使用即可。 在程序的任何地方修改全局变量的值也是允许的。全局变量的值在程序的任何地方都是可见的,并且改变全局变量的值会影响到整个程序使用该变量的地方。 需要注意的是,全局变量的作用域是整个程序,因此在不同文件也可以使用同名的全局变量。为了避免全局变量的命名冲突,建议在不同文件使用全球变量时,在声明之前使用关键字"extern"来引用已经在其他文件定义的全局变量全局变量虽然方便,但滥用全局变量会导致程序难以理解和维护。因此,在使用全局变量时应谨慎,选择合适的变量作用域,避免全局变量的过多使用。 ### 回答3: 在C语言全局变量是在函数外部声明的变量,可以在程序的任何地方使用。全局变量可以在程序的多个函数之间共享数据,因此具有很强的作用域。 全局变量的设置包括以下几个步骤: 1. 在程序的任何函数外部声明全局变量全局变量通常在所有函数之外的全局范围内声明,以便在整个程序可用。声明的语法是在函数外部使用关键字"extern",并在变量名前加上数据类型。 2. 在需要使用全局变量的其他函数使用该变量。在声明了全局变量之后,在其他函数可以直接使用该变量,无需再次声明。可以直接使用变量名进行操作和赋值。 3. 在需要对全局变量赋初值时,可以在函数外部对其进行初始化。全局变量在声明时,如果没有赋予初值,会被默认初始化为0。可以在声明同时对全局变量赋值,也可以在程序的任意地方对其进行修改。 需要注意的是,全局变量虽然具有很大的灵活性,但也有其潜在的风险。由于全局变量可以在任何函数被修改,可能会导致变量值的不可预测性和不稳定性。为了防止全局变量的误用,应尽量避免使用全局变量,而是使用局部变量或参数传递的方式来处理数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值