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

变量详解:创建初始化与内存管理

目录

一、变量的创建与初始化

变量的基本概念

变量声明语法

变量初始化

二、变量的分类

全局变量 vs 局部变量

变量名冲突处理

三、变量的内存存储

内存区域划分

注意事项


一、变量的创建与初始化

了解类型的作用后,我们如何使用它呢?类型主要用于声明变量。

变量的基本概念

在C语言中:

  • 变量:存储程序中可能发生变化的值

  • 常量:存储固定不变的值

变量声明语法

变量创建的基本语法格式为:

data_type variable_name;  // 数据类型 变量名

示例声明

int age;         // 整型变量
char ch;         // 字符变量
double weight;   // 双精度浮点型变量

变量初始化

在声明变量时赋予初始值称为初始化:

int age = 18;               // 整型初始化
char ch = 'w';              // 字符初始化
double weight = 48.0;        // 浮点数初始化
unsigned int height = 100;   // 无符号整型初始化

二、变量的分类

全局变量 vs 局部变量

特性全局变量局部变量
定义位置函数外部(大括号外部)函数内部(大括号内部)
作用域整个程序(跨文件需extern声明)仅定义它的代码块内
生命周期程序运行期间进入代码块创建,退出时销毁
存储位置静态区栈区

示例代码

#include <stdio.h>int global = 2023;  // 全局变量int main() 
{int local = 2018;  // 局部变量printf("局部变量: %d\n", local);printf("全局变量: %d\n", global);return 0;
}

变量名冲突处理

当局部变量与全局变量同名时:

  • 局部变量优先原则

  • 全局变量仍然存在,但被局部变量"遮蔽"

示例

#include <stdio.h>int n = 1000;  // 全局变量int main() 
{int n = 10;  // 局部变量printf("%d\n", n);  // 输出10(局部变量)return 0;
}


三、变量的内存存储

内存区域划分

C/C++程序运行时主要使用三个内存区域:

  1. 栈区(Stack)

    • 存储局部变量

    • 自动分配和释放

    • 空间有限

  2. 静态区(Static)

    • 存储全局变量和static变量

    • 程序运行期间一直存在

  3. 堆区(Heap)

    • 用于动态内存分配

    • 需要手动管理(malloc/free)

注意事项

  • 实际内存管理比这种简单划分更复杂

  • 在操作系统部分会深入讲解内存管理细节

  • 不同平台可能有不同的内存布局实现

http://www.lryc.cn/news/615904.html

相关文章:

  • lesson34:深入理解Python线程:从基础到实战优化
  • XGBoost算法在机器学习中的实现
  • Android Camera 打开和拍照APK源码
  • Android 开发问题:Invalid id; ID definitions must be of the form @+id/ name
  • Android 16 KB页面大小适配的权威技术方案总结
  • Ubuntu 安装 Kibana
  • 神经机器翻译(NMT)框架:编码器-解码器(Encoder-Decoder)结构详解
  • 支持selenium的chrome driver更新到139.0.7258.66
  • 去除Edge微软浏览器与Chrome谷歌浏览器顶部出现“此版本的Windows不再支持升级Windows 10”的烦人提示
  • Elasticsearch QueryDSL 教程
  • Linux操作系统从入门到实战(十八)在Linux里面怎么查看进程
  • 三、k8s 1.29 之 安装1网络 / ikuai路由器虚拟机安装
  • Linux810 shell 条件判断 文件工具 ifelse
  • JavaWeb(苍穹外卖)--学习笔记18(Apache POI)
  • 【QT】常⽤控件详解(七)容器类控件 GroupBox TabWidget 布局管理器 Spacer
  • 祝融号无线电工作频段
  • redis主从模型与对象模型
  • Jmeter性能测试之检测服务器CPU/Memory/磁盘IO/网络IO
  • Flask多进程数据库访问问题详解
  • 深度学习周报(8.4~8.10)
  • ​LabVIEW键盘鼠标监控
  • Python爬虫实战:研究BlackWidow,构建最新科技资讯采集系统
  • Windows执行kubectl提示拒绝访问【Windows安装k8s】
  • 【Linux指南】Vim的全面解析与深度应用
  • nginx下lua的实现机制、Lua错误处理、面向对象
  • 系统集成项目管理工程师【第十一章 规划过程组】规划资源管理、估算活动资源、规划沟通管理和规划风险管理篇
  • 大模型时代的机器人研究趋势:从多模态融合到高效迁移
  • 在Mac上搭建本地AI工作流:Dify与DeepSeek的完美结合
  • Python爬虫实战:研究Ruia框架,构建博客园文章采集系统
  • reuse: for booting my spring project with mvn in Windows command line