C语言之作用域与存储类型

C语言提高之——C语言中的作用域、链接属性和存储类型 以下的一些博客是我在学习《C和指针》这本书的过程中对一些新的收获的总结和记录,也是对大家学习的一个参考,如果发现有疑问的地方可以参考这本书,同时发现其中有误的地方也可以给予评论指出,是对我的帮助也是对后来学习者的帮助。下边就C语言中的标识符的作用域、链接属性和变量存储类型做一定的分析介绍。 阐述与分类: 作用域:     当变量在程序中声明后时,它只有在一定区域内才能被访问,这个区域就是由其 阅读详情

1.c语言可以确定4种不同类型的作用域:

  • 代码块作用域
    在代码块中定义的变量,具有代码块作用域。作用范围是从变量定义的位置开始,到标志该代码块结束的右大括号(})处

  • 文件作用域
    任何在代码块之外声明的标识符都具有文件作用域,作用范围是从它们的声明位置开始,到文件的结尾处都是可以访问的

  • 原型作用域
    原型作用域只适用于那些在函数原型中声明的参数名

  void function(int,int,int);
    	void func(int a,int b,int c)
    	{
    		……
    	}
  • 函数作用域
    函数作用域只适用于goto语句的标签,作用将goto语句的标签限制在同一个函数内部,以及防止出现重名标签

    声明: 是通知编译器该变量名及相关的类型已存在,不需要再为此申请内存空间;当一个变量被声明的时候,编译器就知道该变量被定义在其他地方
    定义: 当一个变量被定义的时候,编译器为变量申请内存空间并填充一些值
    声明与定义小结: 局部变量既是定义又是声明;定义只能来一次,否则就叫做重复定义某个同名变量;而声明可以有很多次
    2.c语言提供5种不同的存储类型:

    • auto
      在代码块中声明的变量默认的存储类型就是自动变量(auto)

    • register
      寄存器变量,将一个变量声明为寄存器变量,那么该变量就有可能被存放CPU的寄存器中。不能通过取址运算符求地址。

    • static
      使用static来声明局部变量,那就会将局部变量指定为静态局部变量,生存周期变化,作用域不变;
      修饰全局变量时,作用域被限制了(限制到当前源文件)
      修饰函数时,作用域被限制了(限制到当前源文件

    • extern
      extern关键字是用于告诉编译器这个变量或函数在别的地方已经定义过了,不要报错,再去找找。

    • typedef
      类型重命名(自定义数据类型),建议把复杂的类型转换为简单的标识符加上typedef,他就会由变量变为对应的类型

用Frida-RPC搞定大麦App最新版签名:一个脚本解决x-sign和x-mini-wua 本文深入解析大麦App最新版签名机制(x-sign和x-mini-wua),详细介绍如何利用Frida-RPC技术开发稳定脚本获取签名参数。通过实战案例展示Java上下文切换、参数序列化等关键技术解决方案,为安全研究和技术验证提供可靠方案。 阅读详情

相关推荐

告别上位机!用MCGS触摸屏+FTP服务器,5分钟搞定工控机文件自动同步

本文介绍了一种工业自动化领域的高效解决方案,通过MCGS触摸屏结合FTP服务器实现工控机文件的自动同步,无需开发上位机软件。该方案特别适用于图像采集、参数同步、数据备份等场景,具有成本低、可靠性高、维护简便等优势。详细配置指南和实战案例帮助用户快速实现零代码文件同步。

weixin_30872499的博客 560

第09天C语言(14):结构体-类型作用域

#pragma mark 结构体-类型作用域 ###pragma mark 概念 ###pragma mark 代码 #include <stdio.h> void text(); // 如果将变量写道函数 或者代码块外面, 那么就不是局部变量, 而是全局变量 // 全局变量的作用...

chouxuyi9789的博客 1301

别光看原理图了!手把手教你用Altium Designer搞定STM32F411最小系统的PCB布局(附电源/晶振/复位电路实战)

本文详细介绍了使用Altium Designer进行STM32F411最小系统PCB布局的实战技巧,涵盖电源分配网络优化、高速信号布线及系统级布局策略。通过规范的工程结构建立、关键设计规则预设和核心电路模块布局,帮助工程师提升PCB设计效率与信号完整性。特别针对STM32最小系统的电源、晶振和复位电路提供了专业解决方案。

weixin_42653691的博客 168

C语言中的存储类别,作用域和生存周期

介绍 变量和函数都有两个属性:数据类型和存储类别,存储类别的不同则它们的作用域和生存期均有所差别 四种存储方式 auto 一般定义的变量没有直接默认为auto类型,函数执行时分配空间,函数结束时自动释放。 static 定义的变量在函数结束后不释放,对静态局部变量在编译时只赋值一次,第二次执行赋值语句时不再重新赋值,但是其他函数也无法使用该静态变量。编译时将变量分配在静态存储区。 extern 声明外部变量,外部变量即全局变量,它的作用域是从变量的定义出开始,到程序文件的结尾。编译时将变量分配在静态存储区。

qq_45279570的博客 327

【mysql8.0.33安装详情教程】

8、进入Account and Roles界面,输入密码,再点击next(密码随便输,自己记住就行)11、进入Apply Configuration界面,直接点Execute,等待应用成功。14、输入密码,点击check,检查是否正确。3、下图是选择安装类型,选择默认安装就可以,然后点击“next”。5、进入Product Configuration,点击next。9、进入Windows Service界面,直接点击next。15、点击Execute执行安装(完成后点击Finish)二、验证是否安装成功。

98渣渣辉的博客 2113

【主题建模】一种基于深度学习的主题建模方法:BERTopic(理论篇)

在我的博客中已经写了很多关于主题建模的内容,当你准备了解 BERTopic 时,默认你已经知道了 LSA、pLSA、NFM、LDA 等传统的主题建模方法。关于主题建模的前置知识我在这里不做赘述,感兴趣的同学可以看看我前几篇博客。学习 BERTopic 需要一定的机器学习基础,让我们一起开始吧!

Data · Model · Agent · Repeat 9894

C语言中的四种作用域

C语言编译器可以确认四种不同类型的作用域: 一.代码块作用域。 在K&amp;R C中,函数形参的作用域始于形参的声明处,位于函数体之外如果函数体内部声明了名字相同的局部变量,他们就将隐藏起来;ANSI C遏止了这种错误的可能性,它把形参的作用域设置为整个函数体。 二.文件作用域。 任何在代码块之外声明的标识符都具有文件作用域。但是在同文件中编写的通过include指令包含到其他文件中的声...

Hello_MyDream的博客 3万+

AI Agent Harness自动化漏洞扫描

本文要介绍的AI Agent Harness自动化漏洞扫描方案,正是为了解决传统漏扫的上述痛点而生。漏洞检出率提升35%以上,逻辑漏洞检出率从不足30%提升到92%误报率从27%降到3%以下,人工复核成本降低90%支持自定义业务系统、IoT、工控等多场景资产扫描,适配成本降低80%内置反馈学习机制,扫描效果越用越好AI Agent是指具备自主感知、决策、行动能力的大模型驱动程序,它可以根据给定的目标,自主调用工具、规划步骤、完成任务。

AI 原生应用开发的博客 473

变量

一、作用域和生存期    C程序的标识符作用域有三种:局部、全局、文件。标识符的作用域决定了程序中的哪些语句可以使用它,换句话说,就是标识符在程序其他部分的可见性。通常,标识符的作用域都是通过它在程序中的位置隐式说明的。    1.局部作用域        前面各个例子中的变量都是局部作用域,他们都是声明在函数

haifengwhb的专栏 832

基于 STM32 的智能水表流量计设计与实现 —— 数据采集与远程传输

本文设计的基于 STM32 的智能水表流量计通过霍尔传感器实现流量采集,结合 STM32 的处理能力完成数据计算、存储与远程传输,具备计量精准、功耗低、可远程监控等特点。未来可优化方向:引入低功耗模式延长电池寿命,增加水质检测模块实现多参数监测,提升水务管理智能化水平。

weixin_42300449的博客 1028

利用baostock获取上市公司财务指标

利用baostock获取上市公司的财务指标 1、导入模块,登录baostock import baostock as bs import pandas as pd import time # 登陆系统 lg = bs.login() # 显示登陆返回信息 print('login respond error_code:'+lg.error_code) print('login respond error_msg:'+lg.error_msg) 2、查询股票代码、行业板块 # 查询股票代码 rs=.

firefox_yau的博客 2098

c语言的作用域和存储域

1.如果内层代码块有一个标识符的名字和外层代码块的一个标识符同名,内层的那个标识符就将隐藏外层的标识符--外层的那个标识符无法再内层代码块中通过名字访问.2.任何在所有代码块之外的声明的标识都具有文件作用域,它标识这些标识符从他们的声明之处直到它所在的源文件结尾处都可以访问,(函数名也具有文件作用域,全局变量也具有).3.链接属性:internal(在同一个源文件中都表示同一个实体),extern...

snowman的博客 987

rv1126如何切换720p和1080p

切换720p和1080p可以使用modetest,但是需要将这两种模式都添加到connector中去 添加一个新的mode到connector中去,其实内核中已经有相关接口了,需要做一些小改动。 1.不采用设备树的方式去配置,将720p和1080p的timing参数配置放在数组中。 2.这里的printer和设备树中的.compatible = "printer"一致。 3.将其添加到connector中去 static int panel_simple_get_fixed_modes(struct

weixin_42097108的博客 864

C语言入门(十四)变量的作用域和存储类型

变量的作用域和存储类型 一、作用域和生存期 C程序的标识符作用域有三种:局部、全局、文件。标识符的作用域决定了程序中的哪些语句可以使用它,换句话说,就是标识符在程序其他部分的可见性。通常,标识符的作用域都是通过它在程序中的位置隐式说明的。 1.局部作用域 前面各个例子中的变量都是局部作用域,他们都是声明在函数内部,无法被其他函数的代码所访问。函数的形式参数的作用域也是局部的,它们的作用

比较喜欢、笑的博客专栏 7067

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C语言作用域,链接属性,存储类型

容易搞混的三个概念 ——————作用域,链接属性和存储类型 1.作用域(描述可见性) 作用域分为四种: 代码块作用域(代码块内可见) 文件作用域(文件内可见,因为有include,所以不一定是某一个源文件) 原型作用域(只在原型内可见) 函数作用域 a.代码块作用域 代码块作用域,声明在代码块中(花括号内)的变量,具有代码块作用域。具有代码块作用域的变量的作用范围:从声明的地方开...

qq2071114140的博客 892

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

c语言变量的作用域,C语言变量的作用域和存储类型

一、作用域和生存期C程序的标识符作用域有三种:局部、全局、文件。标识符的作用域决定了程序中的哪些语句可以使用它,换句话说,就是标识符在程序其他部分的可见性。通常,标识符的作用域都是通过它在程序中的位置隐式说明的。1.局部作用域前面各个例子中的变量都是局部作用域,他们都是声明在函数内部,无法被其他函数的代码所访问。函数的形式参数的作用域也是局部的,它们的作用范围仅限于函数内部所用的语句块。void ...

weixin_30095833的博客 458

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

变量 作用域 c语言,C语言变量的作用域和存储类型

C语言变量的作用域和存储类型一、作用域和生存期C程序的标识符作用域有三种:局部、全局、文件。标识符的作用域决定了程序中的哪些语句可以使用它,换句话说,就是标识符在程序其他部分的可见性。通常,标识符的作用域都是通过它在程序中的位置隐式说明的。1.局部作用域前面各个例子中的变量都是局部作用域,他们都是声明在函数内部,无法被其他函数的代码所访问。函数的形式参数的作用域也是局部的,它们的作用范围仅限于函数...

weixin_34603528的博客 411

C语言学习总结3—作用域、链接属性、存储类型

作用域、链接属性、存储类型

weixin_45760797的博客 1161

c语言 变量的类型和作用域,存储类型和变量的作用域(C语言)

这里将告诉您存储类型和变量的作用域(C语言),具体完成步骤:1、数据在内存中的存储在计算机中,用于存程序和数据的物理单元有寄存器和随机存储器(RAM)。寄存器速度快,空间少,常常只存放参加运算的少数变量。RAM比寄存器速度慢,但空间大,可存放程序和一般数据。RAM又分为堆栈区、系统区、程序区和数据区(1)堆栈区:用于临时存放数据的内存单元,它具有先进后出的特性。堆栈区的数据可不断被覆盖。(2)系统...

weixin_42469444的博客 441

c语言之函数存储属性,C语言作用域、链接属性和存储类型

作用域编译器可以确认的4种作用域-代码块作用域、文件作用域、函数作用域和原型作用域,一般来说,标识符(包括变量名和函数名)声明的位置决定它的作用域。(1)代码块作用域一对花括号成为一个代码块,任何在代码块开始位置声明的标识符(不包括代码块的函数名)具有代码块作用域。代码块处于嵌套状态时,声明于内层代码块的标识符的作用域到达该代码块的尾部(包括花括号)便终止。注意:如果内层代码块的某个变量与外层相同...

weixin_39533280的博客 342

【C】C语言函数中的变量(包括:作用域、存储类型)

局部变量和全局变量 C语言中变量按其作用域分,可分为局部变量和全局变量,具体的解释为: 局部变量(内部变量):在定义它的函数内有效,但是函数返回后失效; 全局变量(外部变量):在所有源文件内均有效。在同源文件的函数中使用使用全局变量,需要将全局变量提前声明;同时在不包含全局变量定义的不同源文件需要用extern关键字再次声明。 关于C语言全局变量和局部变量,还有几个注意点: 如果在该函数内...

Yngz_Miao的博客 1万+

C语言变量的作用域和存储类型

一、作用域和生存期 C程序的标识符作用域有三种:局部、全局、文件。标识符的作用域决定了程序中的哪些语句可以使用它,换句话说,就是标识符在程序其他部分的可见性。通常,标识符的作用域都是通过它在程序中的位置隐式说明的。 1.局部作用域 前面各个例子中的变量都是局部作用域,他们都是声明在函数内部,无法被其他函数的代码所访问。函数的形式参数的作用...

weixin_34375251的博客 226

c语言变量的作用域和存储类别,C语言中的四种存储类型

转自:http://blog.youkuaiyun.com/u014041012/article/details/46432441一、 首先来说说数据的类型,所有的数据都有两种类型,一是常见的数据类型,如int,float等,一种便是今天的重头戏,存储类型。总共有四种存储类型的变量,分别为自动变量(auto)、静态变量(static)、外部变量(extern)以及寄存器变量(register)。先回顾一下定义...

weixin_35666639的博客 1457

C语言中基本数据类型、声明、作用域、存储类型

文章详细介绍了C语言中的基本数据类型、数据类型声明方法、作用域、存储类型等内容

qq_44143499的博客 1256

C语言导航 7.3变量存储类型和作用域

②static:静态类型,该类型是生存期最长的,只要程序还在执行,该类型的值就可能再用到,所以要一直保留着。①auto:自动类型,该类型是默认类型,会根据定义的位置决定生存期,在生存期结束后将消失。1.说明:在数据定义类型中,存储类型用于定义变量在内存中存储区域,从而决定其生存期。注意:函数的形参也属于自动类型,该类型变量在获得内存区域后,初始值为随机数。③register:寄存器类型,该类型是最珍贵的,它将存储在寄存器中。④extern:外部类型,该类型表示将定义范围扩展到其他位置。

XD_356A的博客 344

C语言中的变量的存储类型和作用域以及链接的总结

变量的作用域 文件作用域 在所有函数的开头定义变量,变量具有文件作用域,称为全局变量。全局变量的值在函数执行中一直有效。 #include<stdio.h> int f1 int a=10; int main() { f1(a); return; } int f1(int x) { for(int i=0;i<10;i++) { x+=x; ...

qq_44703307的博客 772
上一篇: C语言之数组指针与指针数组以及指针与数组的关系
下一篇: C语言之动态内存管理
Young-_-D
博客等级 码龄8年 62粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值