当前位置: 首页 > news >正文

变量的定义与分类

一、变量定义

变量是用来存储数据的被命名的内存位置。

变量需要用一个有名字的、有特定属性(如整数)的存储单元来存放数据。

:变量必须先定义(定义内存地址:int a),或者先声明(多个文件编译的时候使用的)(有这个内存但不为它开辟存空间)(不能赋值)在使用,定义时指定名字和类型,也可以指定初值。

二、用法

<存储类型><数据类型>变量名 = 初始值;(一般没有存储类型,因为默认为auto))

三、分类

1.存储类型说明符:用于控制变量的存储位置,生命周期和作用域。

auto:局部变量默认存储类型(只能用于函数内或块内)(块:大括号{}里的内容)

static:声明为静态变量(生命周期为整个程序,但作用域有限)

extern:声明为外部变量,全局变量的默认存储类型(不加这个就是auto类型默认,加了之后表示声明,不能赋值)

register:建议编译器将变量存储在寄存器中,以提高访问速度。(不一定在存储器中,具体由编译器决定)

typedef:用于定义类型

const:常量变量类型,表示只读,不能通过变量修改内存空间

注:

1.通常用于局部变量,特别是函数经常访问的变量。全局变量则在内存中,因为全局变量需要在程序的整个程序中存在,如果只在寄存器中,那么没有用到寄存器的时候全局变量就用不了,不符合其生命周期。

2.register类型的变量不能获取地址,因为其地址可能在寄存器中。

2.数据类型:用于定义变量或函数的基本数据类型。

int:整数类型(4个字节)(最高位是符号位,剩下 31 位是数值位。)

signed:有符号整数

unsighed:无符号整数(所有的位都用来表示数值本身,没有符号位)

short:短整型(2个字节)

char:字符类型(1个字节)

long:长整型(4个字节)

long long:(8个字节)

float:浮点型(4个字节)

double:双精度浮点型(8个字节)(求平均数)

bool:布尔类型

void:空类型,声明函数无返回值或无参数,或未定义指针类型

四、变量命名规则

1.只能由大小写字母、数字和下划线_组成

2.不能以数字开头

3.长度不超过63字符

4.变量名区分大小写

5.变量名不能使用关键字

五、相关概念

1.作用域

局部作用域:变量只在某个特定的函数、代码块中可用。

存储位置:栈区(向下占的,地址从大变小,变量与下一个变量的字节不一定是紧挨着,要腾出下一个变量的字节空间:分配的首地址要与8字节对齐)

生命周期(变量创建到销毁的过程):代码块开始到结束

初始值:未定义的时候为未定义值(随机值)

注:不同函数和代码块可以用相同名字的变量

全局作用域:变量在整个程序的范围内可见,全局作用域的变量而被称为全局变量。

存储位置:静态存储区

生命周期:程序启动到结束

初始值:未初始化为0。

注:

自动变量也叫局部变量。

静态局部变量的命名会冲突。

静态全局变量函数内定义的全局变量名和程序定义的冲突时,会优先采用函数内的。

静态局部变量和静态全局变量位置区别

虽然定义方法看起来一样,位置不同可以区分。静态全局变量所有函数之外

静态局部变量:函数体内部

分辨局部变量和静态局部变量:有static声明就是静态。

定义外部变量

1.c 文件中直接定义(不加extern):int my_variable = 42;

2. 在头文件中声明(加 extern)extern int my_variable;

区分外部变量和局部变量

看位置:外部变量在函数外,局部变量在函数里面

http://www.jsqmd.com/news/467406/

相关文章:

  • 2026年米特科斯鱼片机性价比分析,质量好不好看这里 - 工业品网
  • 多路io(select/epoll)
  • 光伏电池建模及仿真:探索PV曲线与IV曲线的奥秘
  • 2026年上海热门的别墅座椅电梯厂家,Uzin优行值得选吗 - 工业设备
  • 2026做轻量化单兵无人机系统比较好的公司有哪些推荐?猎翼无人机的飞行体验 - 品牌2026
  • 阿里云轻量服务器搭建 WireGuard (wg-easy) 指南
  • DevOps技术面试指南:容器、云原生与内核核心问题
  • ACWing 3497 质数
  • 浙江润鑫轴线车无线汽车称重仪:智能无线传输,称重检测一步到位 - 速递信息
  • 【操作系统学习日记】《现代处理器性能的三重奏:ISA架构、流水线与缓存系统》
  • 基于C# WinForm的PLC通讯上位机开发之旅:Modbus协议与SQL 2008的融合
  • 探索微观孔隙建模插件:开启多领域模拟的新大门
  • 【LeetCode】1. 两数之和(Two Sum)— 哈希表经典题解(C语言)
  • ESP32-S3 基础介绍
  • 探索 COMSOL 中含裂缝地层的流动与传热耦合模拟:油藏数值模拟实战
  • 基于二进制粒子群算法的配电网故障诊断—Matlab 应用选取配电网故障诊断,采用二进制粒子群优化算法
  • 自动药片装瓶机的“神经中枢“是如何炼成的
  • CPU_多线程操作图片_代码详解
  • 纯电动汽车动力经济性仿真:Cruise 与 Simulink 联合之旅
  • 【教学类-133-01】20260309狮虎旗(井字棋)01豆包初稿HTML+ CSS + JavaScript
  • 西门子200smart模拟量处理:滤波与报警的完美结合
  • 从DeepSig RadioML 2018.01A到定制化数据集:单信噪比单调制数据的提取与实战应用
  • 玩转PLC液体混合作业线(附全套工业组态方案)
  • 性价比优先:预算低情景下自动化立体仓库公司的选型指南 - 品牌策略主理人
  • Claude Code Hooks 实战:8大事件与10+脚本的自动化开发指南
  • STM32四轴联动运动控制:直线圆弧插补技术,编码器反馈与加减速控制,原理图和源代码全解析
  • 猎翼无人机,提升探测效率:2026军用目标识别无人机蜂群系统供应商推荐 - 品牌2026
  • 探索风光储交流微网中的双向储能变流器
  • 【小龙虾-OpenClaw】Railway如何部署小龙虾-OpenClaw
  • Hutool StrUtil 实战技巧:提升Java字符串处理效率