【C语言】extern 关键字

article/2025/9/24 13:04:13

🚩write in front🚩   

🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎
🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家博主 & 星级博主~掘金⇿InfoQ~51CTOP创作者~周榜109﹣总榜883⇿全网访问量35w+🏅
🆔本文由 謓泽 原创 CSDN首发🙉如需转载还请通知⚠
📝个人主页-謓泽的博客_CSDN博客 📃
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​
📣系列专栏-
【C语言】关键字_謓泽的博客🎓
✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩

⑩② 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 1
int 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的使用

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


http://chatgpt.dhexx.cn/article/lIeOpHsQ.shtml

相关文章

extern和static的用法

一&#xff1a;static static有两种使用&#xff1a;一种是修饰变量&#xff0c;另一种是修饰函数 1.修饰变量&#xff1a;作用是使得该变量在出了其作用范围后不会被销毁 第一种是修饰局部变量&#xff1a; 普通的局部变量是存储在栈区的&#xff0c;但是通过static修饰之后…

extern用法

1.extern变量&#xff0c;extern函数 extern 最简单的用法就是在一个文件中引用另一个文件中的变量或者函数。 首先我们要知道一个概念&#xff1a;声明可以有多次&#xff0c;定义只能有一次。 1.1extern变量 先来谈谈extern变量。 ① int a; ② int a 0; ③ extern int a…

C语言学习之extern关键字

1.了解extern 1.extern是C语言的一个关键字&#xff0c;可以用来修饰函数与变量 2.当extern修饰一个变量或函数时时&#xff0c;就是在声明这个变量(函数)&#xff0c;告诉编译器在外部文件中已经这个变量(函数)&#xff0c;要通过编译。 2.extern的用法 1.在一个文件中引用其…

extern关键字的一般用法

extern关键字会提升变量或者函数的逼格&#xff0c;使得它们可以跨文件被访问。话虽然是这么说&#xff0c;使用这个关键字必须要注意一些东西。 首先&#xff0c;你得在cpp文件里面实现这些全局变量和全局函数&#xff0c;这是最基本的&#xff0c;然后只需要在需要用到这些变…

C++中的extern

文章目录 extern的含义修饰全局变量修饰全局常量修饰局部变量修饰字符串C代码C代码 想必大家都知道&#xff0c;在C中&#xff0c;想要生成一个可执行文件&#xff08;exe&#xff09;或者动态链接库&#xff08;dll&#xff09;&#xff0c;需要经过编译和链接两个步骤&#x…

extern使用方法总结!

一、问题 Extern的问题在于不知道这个关键词出现的时候到底是声明还是定义&#xff1f; 二、详解 1、函数的声明extern关键词是可有可无的&#xff0c;因为函数本身不加修饰的话就是extern。但是引用的时候一样需要声明的。 2、全局变量在外部使用声明时&#xff0c;extern关键…

extern详解

extern——关键字 extern是C语言中的一个关键字&#xff0c;一般用在变量名前或函数名前&#xff0c;作用是用来说明“此变量/函数是在别处定义的&#xff0c;要在此处引用”&#xff0c;extern这个关键字大部分读者应该是在变量的存储类型这一类的内容中 遇到的&#xff0c;…

【014 关键字】一文彻底搞懂extern用法

一、定义和声明的区别 声明&#xff1a;用来告诉编译器变量的名称和类型&#xff0c;而不分配内存&#xff0c;不赋初值。 定义&#xff1a;为了给变量分配内存&#xff0c;可以为变量赋初值。 注&#xff1a;定义要为变量分配内存空间&#xff1b;而声明不需要为变量分配内…

HDU AWR电磁场与微波实验 操作记录

类型 滤波器版图设计功放设计IV曲线创建偏置电路&添加原理图背面注释添加谐波平衡端口添加双音激励端口 实验课需要使用这款软件 记录一下&#xff0c;提醒自己如何操作 工程文件如下 &#xff0c;0积分 滤波器. 版图. 功放. 交指滤波器. 滤波器 • Creating a schematic …

达梦AWR使用

DBMS_WORKLOAD_REPOSITORY 包 1、概述 AWR默认是关闭的需要受到开启&#xff0c;如 果 需 要 开 启 &#xff0c; 则 调 用 DBMS_WORKLOAD_REPOSITORY.AWR_SET_INTERVAL 过 程 设 置 快 照 的 间 隔 时 间 。 DBMS_WORKLOAD_REPOSITORY 包还负责 snapshot&#xff08;快照&…

AWR(性能报告)

本文章为网络笔记&#xff0c;看了warehouse老师的视频受益匪浅&#xff0c;更是感觉自己技术太过初级&#xff0c;特写了本笔记&#xff0c;方便以后反复学习&#xff01; 如有任何不妥&#xff0c;请发邮件至102448567qq.com删除文章&#xff01; 关于warehouse&#xff1a; …

AWR2243

TDA2xx-AWRx243 TI毫米波板&#xff08;代完善更新和作者的继续研究&#xff09; 1、安装mmwave studio和驱动&#xff08;链接&#xff1a; https://download.csdn.net/download/weixin_42501561/19775644 &#xff09; 2、设置网络端口IP地址&#xff08;如果不能更改路由器I…

awr报告

某客户反馈数据库慢&#xff0c;给到一份awr报告。分析如下 每个cpu可用处理时间3501.6s(59.86min)&#xff0c;系统负载为&#xff1a;511(59.86*16)50%,其中16为CPUs direct path read最高&#xff0c;可能有下面三种原因&#xff1a; parallel query大量disk排序table预读取…

awr清理

Oracle并没有真正进行删除AWR报告信息&#xff0c;查询metalink发现是Oracle的bug&#xff0c; Bug 8622802描述了这个问题&#xff0c; 修复版本&#xff1a; #禁用awr报告 EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(INTERVAL > 0); select * from WRM$_SN…

AWR

AWR自动工作量资料档案库: AWR用于收集关于该特定数据库的操作统计信息和其他统计信息&#xff0c;oracle以固定的时间间隔&#xff08;默认60分钟&#xff09;为其所有重要统计信息和负载信息执行一次快照&#xff0c;并将这些快照存储在AWR中。这些信息在AWR中保留给定的时间…

达梦 awr

AWR 全称为自动工作集负载信息库&#xff08;Automatic Workload Repository&#xff09; ,采集数据库的性能相关数据,用来分析数据库性能问题,方便调优工作。 达梦中 awr 功能默认是关闭的,另外 mpp 集群不支持 awr 开启 AWR 功能 检查 awr 开启状态 达梦提供了 SF_CHECK_AW…

ORACLE调优深入理解AWR报告

什么是AWR? 一堆历史性能数据&#xff0c;放在sysaux表空间上&#xff0c;AWR和sysaux都是10g出现的&#xff0c;是oracle调优的关键特性。 默认快照间隔1小时&#xff1b;10g保存7天&#xff1b;11g保存8天&#xff1b; 可以通过DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SE…

AWR射频仿真基本操作(一)

这里只讲述一个基本的操作&#xff1a; 软件是AWR 14版本 新建工程 File–New project 然后File-project as 即另存为新建一个工程&#xff0c;自己取好名字。 设置基本参量 AWR可以直接进行仿真频率和单位之类的基本设置。 如果你只需要基本的S参数仿真&#xff0c;那么…

理论实践:循序渐进理解AWR细致入微分析性能报告

理论实践&#xff1a;循序渐进理解AWR细致入微分析性能报告 黄凯耀 (Kaya) ACOUG核心会员&#xff0c;高级技术专家 曾经工作于Oracle Real World Database Performance Group&#xff0c;一个隶属于Oracle公司总部数据库产品管理的核心团队。大学及研究生时期专注于Linux应用开…

AWR概念原理涉及表和包

一&#xff1a;AWR概念 Oracle10g以后&#xff0c;Oracle提供了一个性能检测的工具&#xff1a;AWR&#xff08;Automatic Workload Repository 自动工作负载库&#xff09;这个工具可以自动采集Oracle运行中的负载信息&#xff0c;并生成与性能相关的统计数据。我们可以根据这…