C语言丨正确使用extern关键字详解

利用关键字extern,能够在一个文件中引用另外一个文件中定义的变量或者函数,下面就结合具体的实例,分类说明一下。编程


 

1、引用同一个文件中的变量安全

#include<stdio.h>函数

int func();学习

int main()spa

{视频

  func(); //1blog

  printf("%d",num); //2教程

  return 0;get

}编译器

int num = 3;

int func()

{

  printf("%d\n",num);

}

若是按照这个顺序,变量 num在main函数的后边进行声明和初始化的话,那么在main函数中是不能直接引用num这个变量的,由于当编译器编译到这一句话的时候,找不到num这个变量的声明,可是在func函数中是能够正常使用,由于func对num的调用是发生在num的声明和初始化以后。

若是我不想改变num的声明的位置,可是想在main函数中直接使用num这个变量,怎么办呢?可使用extern这个关键字。像下面这一段代码,利用extern关键字先声明一下num变量,告诉编译器num这个变量是存在的,可是不是在这以前声明的,你到别的地方找找吧,果真,这样就能够顺利经过编译啦。可是你要是想欺骗编译器也是不行的,好比你声明了extern int num;可是在后面却没有真正的给出num变量的声明,那么编译器去别的地方找了,可是没找到仍是不行的。

下面的程序就是利用extern关键字,使用在后边定义的变量。

#include<stdio.h>

int func();

int main()

{

  func(); //1

  extern int num;

  printf("%d",num); //2

  return 0;

}

int num = 3;

int func()

{

  printf("%d\n",num);

}

2、引用另外一个文件中的变量

若是extern这个关键字就这点功能,那么这个关键字就显得多余了,由于上边的程序能够经过将num变量在main函数的上边声明,使得在main函数中也可使用。 

extern这个关键字的真正的做用是引用不在同一个文件中的变量或者函数。

main.c

#include<stdio.h>

int main()

{

  extern int num;

  printf("%d",num);

  return 0;

}

b.c

#include<stdio.h>

intnum = 5;

voidfunc()

{

  printf("fun in a.c");

}

例如,这里b.c中定义了一个变量num,若是main.c中想要引用这个变量,那么可使用extern这个关键字,注意这里能成功引用的缘由是,num这个关键字在b.c中是一个全局变量,也就是说只有当一个变量是一个全局变量时,extern变量才会起做用,向下面这样是不行的。

mian.c

#include<stdio.h>

int main()

{

  extern int num;

  printf("%d",num);

  return 0;

}

b.c

#include<stdio.h>

void func()

{

  int num = 5;

  printf("fun in a.c");

}

另外,extern关键字只须要指明类型和变量名就好了,不能再从新赋值,初始化须要在原文件所在处进行,若是不进行初始化的话,全局变量会被编译器自动初始化为0。像这种写法是不行的。

extern  int  num=4;

可是在声明以后就可使用变量名进行修改了,像这样:

#include<stdio.h>

int main()

{

  extern int num;

  num=1;

  printf("%d",num);

  return 0;

}

若是不想这个变量被修改可使用const关键字进行修饰,写法以下:

mian.c

#include<stdio.h>

int main()

{

  extern const int num;

  printf("%d",num);

  return 0;

}

b.c

#include<stdio.h>

const int num=5;

void func()

{

  printf("fun in a.c");

}

使用include将另外一个文件所有包含进去能够引用另外一个文件中的变量,可是这样作的结果就是,被包含的文件中的全部的变量和方法均可以被这个文件使用,这样就变得不安全,若是只是但愿一个文件使用另外一个文件中的某个变量仍是使用extern关键字更好。

3、引用另外一个文件中的函数

extern除了引用另外一个文件中的变量外,还能够引用另外一个文件中的函数,引用方法和引用变量类似。

mian.c

#include<stdio.h>

int main()

{

  extern void func();

  func();

  return 0;

}

b.c

#include<stdio.h>

const int num=5;

void func()

{

  printf("fun in a.c");

}

这里main函数中引用了b.c中的函数func。由于全部的函数都是全局的,因此对函数的extern用法和对全局变量的修饰基本相同,须要注意的就是,须要指明返回值的类型和参数。

以上所述是小编给你们介绍的C语言正确使用extern关键字详解整合,但愿对你们有所帮助。


 

若是你想更好的提高你的编程能力,学好C语言C++编程!弯道超车,快人一步!
C语言C++学习企鹅圈子】,分享(源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比本身琢磨更快哦!

编程学习书籍:


 

编程学习视频:

相关文章
相关标签/搜索