C语言--修饰符(auto、extern、static)与变量(局部变量+全局变量)和函数的关系

 其中extern功能和用法上,比较特殊。先了解extern修饰全局变量,我总结为以下几点

为了方便描述,我创建了一个工程,工程包含了两个源文件,main.c和database.c

**1):database.c中使用extern时用来声明外部全局变量,变量已经在main.c中定义,指示编译器去main.c去查找。

database.c中声明格式 :(声明时必须要说明引用的数据类型,和变量名,缺一不可)

extern int x;

database.c中,声明时不能初始化,不然编译器会报错。错误用法(在引用的文件中,这样定义是错的)

extern int x=100;

但是注意:x变量在main.c中,x在定义赋初值时,也是可以添加extern的,且不会报错

extern int x=100;

**2)在引用的编辑单元database.c里,声明外部变量,编译器不会做正确性检查!!只有在使用这个外部引用的变量时,发现错误才会报错!!什么意思?如在引用的编辑单元database.c写如下代码

extern int x;
extern int y;  //y在mian.c中根本没有定义

y在mian.c中根本没有定义。但是编译器不会报错,编译正常通过。

使用时,发现y没有再mian.c中定义,才会报错 如

extern int x;
int fun_2()
{
   printf("在fun_2中输出在引用的extern修饰的变量x的值%d\n",x);
 
}

此时编译器就会报错。

**3)extern说明符的作用域,从声明处开始,到该引用单位结束处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/501435.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安装 Ubuntu 22.04.3 和 docker

文章目录 一、安装 Ubuntu 22.04.31. 简介2. 下载地址3. 系统安装4. 系统配置 二、安装 Docker1. 安装 docker2. 安装 docker compose3. 配置 docker 一、安装 Ubuntu 22.04.3 1. 简介 Ubuntu 22.04.3 是Linux操作系统的一个版本。LTS 版本支持周期到2032年。 系统要求双核 C…

JAVA 反序列化之 Apache Commons Collections 反序列化漏洞分析

Apache Commons Collections 反序列化漏洞是 2015 年影响重大的漏洞之一,同时也开启了各类 java 反序列漏洞的大门,这几年大量各类 java 反序列化漏洞不断出现。java 反序列化漏洞基本一出必高危,风险程度极大,最近研究了一些反序…

关于页面置换算法的例题

页面置换算法中有LRU、FIFO和最佳页面置换算法。针对以下条件,计算上述三个算法下的页面置换过程和缺页中断率: (1)页面访问序列:2,3,2,1,5,2,4,5,3,2,5,2 (2)分配内存块数:3块&…

面试经典150题——用最少数量的箭引爆气球

"The only person you are destined to become is the person you decide to be." - Ralph Waldo Emerson 1. 题目描述 2. 题目分析与解析 这个题目开始读题的时候是有点不好理解题意的,因此我先做个图让大家对于题意有更好更直观的理解再来分析题目。 …

nginx反向代理之缓存 客户端IP透传 负载均衡

一 缓存功能 缓存功能可以加速访问,如果没有缓存关闭后端服务器后,图片将无法访问,缓存功能默认关闭,需要开启。 相关选项: ​ proxy_cache zone_name | off; 默认off #指明调用的缓存,或关闭缓存机制;C…

有道翻译相关介绍

官网:有道翻译 (youdao.com) 翻文本与文档 长短句实时翻译,109种语言互译 支持医学、计算机、金融经济等专业领域翻译 提供42个专业术语库&上传自定义术语库 翻词汇 实时收录最新词汇,8种语言互译 完整收录新牛津、柯林斯、韦氏等权威…

redis7.2.2|Dict

文章目录 StructredisDBdictdictTypedictEntry 宏定义散列函数散列冲突dictEntry pointer bit tricks[指针位技巧]API implementation_dictReset_dictInitdictCreatedictGetHashdictSetKeydictSetValdictSetNextdictGetNextdictGetValdictGetKey_dictCleardictEmptydictRelease…

随机事件与概率

《1800》 独立 条件概率的运算思路 相互独立,则其各种运算皆独立 概率计算按照里面的因素的计算展开即可 概率值可以直接用分数表示

GaussDB跨云容灾:实现跨地域的数据库高可用能力

背景 金融、银行业等对数据的安全有着较高的要求,同城容灾建设方案,在绝大多数场景下可以保证业务数据的安全性,但是在极端情况下,如遇不可抗力因素等,要保证数据的安全性,就需要采取跨地域的容灾方案。 …

使用Python对数据进行rsa加密

#!/usr/bin/python3 import base64 import json import jsonpath import requests from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs1_v1_5 from base64 import b64decode, b64encodedef get_public_key():"""备注&#…

【java 基础】闲话 ClassLoader 和 SPI (一)

文章目录 引子双亲委派模型你真的明白了吗? 双亲委派“不够用了”SPI机制 其他琐碎 引子 有别于 java 提供的 IO 模块,java 中的classloader主要是用来加载类的,当然除了加载类,也可以加载资源文件。 那么首先我们会问一个问题&…

【内部消息】24上半年软考可能支持平板、PC和手机等多平台报名

根据内部消息,软考网上报名系统正在改革,之前只能通过PC端报名的,下次报名可能支持平板、手机等多终端进行网上报名了。现在官方并没有确切消息发出,这次变动可能发生在2024上半年,也有可能得到下半年才能实行。以下是…