写点什么

【C 语言】extern 关键字

作者:謓泽
  • 2022-11-13
    江西
  • 本文字数:1486 字

    阅读完需:约 5 分钟

【C语言】extern 关键字

🚩write in front🚩   

🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎

🏅2021 年度博客之星物联网与嵌入式开发 TOP5~2021 博客之星 Top100~阿里云专家博主 & 阿里云星级博主~掘金⇿InfoQ~51CTOP 创作者(创作新人榜 No.10)~[CSDN]周榜 334﹣总榜 925 ⇿ 全网访问量 40w+🏅

🆔本文由 謓泽 原创 发布在 InfoQ 如需转载还请通知⚠

📝个人主页-InfoQ - 促进软件开发及相关领域知识与创新的传播-极客邦

🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝

✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩

⑩② extern ⇿ 外部声明

⒈描述⇢extern 变量称之为外部存储变量。

⒉定义⇢extern 在声明了此程序当中将要用到但尚未定义的外部变量。

⒊注意⇢通常,外部存储类型都用于声明在另一个转换但又中定义变量。


int a;        //声明,也是定义。extern int a; //声明,不是定义,告知编译器你等下我是有这个变量的
复制代码

🍊定义⇢本质就是开辟空间,定义只能有一次。

🍏声明⇢ 告知,现在这个变量已经在某个地方已经定义好了,你现在不用定义了。前期的时候先不用管它,等下告知编译器我后面会定义这个变量的(声明可以多次)


#include <stdio.h>//外部变量声明extern int x;    extern int y;int addtwonum(){    return x+y;}//全局变量的声明int x = 1;int y = 2;int main(void){    int result;    result = addtwonum();    printf("result = %d\n",result);    return 0;}
复制代码

运行结果🖍

result = 3

拓展知识点如下👇

㈠在所有的函数外部定以的变量叫做-全局变量。

㈡全局变量是可以在整个程序当中进行使用的。

㈢当然在程序当中我们尽量在代码当中少用到全局变量比较。

㈣注意⇢当局部变量和全局变量同名的话,局部变量的使用优先。

那么如果我们没有加入 extern 外部存储变量程序运行的时候会发生什么。如下所示↓


#include <stdio.h>
int x = 1;int y = 2;int addtwonum(){ return x+y;}int main(void){ int result; result = addtwonum(); printf("result 为: %d\n",result); return 0;}
复制代码

🍊代码说明⇢如果程序是这样的话即使我们没有用 extern 外部存储变量,程序也是可以运行成功的。因为我们在前面已经定义了全局变量了。

那么下面再举出一个例子,我们实现 Add()函数用 extern() 外部声明变量来实现。


test.c 文件


#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>extern Add(int x, int y);int main(void){  int x = 20;  int y = 30;
int ret = Add(x, y); printf("ret = %d\n", ret); return 0;}
复制代码

Add.c 文件


#define _CRT_SECURE_NO_WARNINGS 1int Add(int x, int y){  return x + y;}
复制代码

编译运行结果🖊

ret = 50


最后⇢我们还需要在注意一点,声明并不代表开辟了空间。如果我们只是声明了的话却没有进行定义也是不可以的🙅‍


⇥在.h 当中变量的声明必须带上 extern!函数的声明可以带也可以不带 extern.一般你这么定义函数那么你就在.h 文件当中怎么去进行声明即可。


🍅拓展⇢一般来说用<>包括的是 C 语言当中的头文件或者是库函数当中的头文件," "是自己使用自己所自定义的头文件[约定俗称的规矩],实际上.c 源文件,我们只需要在.h 头文件当中加上去就可以了。而源文件可以直接不需要的指代头文件。

#define _CRT_SECURE_NO_WARNINGS 1​#include <stdio.h>extern int x = 1;int main(void){    printf("%d",x);    return 0;}
复制代码

在上述代码当中就是声明变量却没有进行变量的定义,一句话『声明并没有开辟空间』

📃模块化 extern 的使用


🤔说明↔通过上述代码可以证明变量和函数是可以进行跨文件的访问的。


用户头像

謓泽

关注

一句话介绍下自己~ 2022-01-29 加入

谁也不知道旅途的终点是怎么样的 现在只不过是刚启航⛳ 便要全力以赴!终点必将是星辰🌠大海🌊 2021年度博客之星物联网与嵌入式开发TOP5 2021博客之星Top100 阿里云专家博主^星级博主 CSDN⇿掘金⇿InfoQ[创作者]

评论

发布
暂无评论
【C语言】extern 关键字_11月月更_謓泽_InfoQ写作社区