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

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

目录

一、变量的创建与初始化

变量的基本概念

变量声明语法

变量初始化

二、变量的分类

全局变量 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.xdnf.cn/news/17437.html

相关文章:

  • 【数据结构入门】栈和队列的OJ题
  • Virtio 驱动关键结构体与函数详解
  • RabbitMQ面试精讲 Day 18:内存与磁盘优化配置
  • 01.【面试题】在SpringBoot中如何实现多数据源配置
  • UNet改进(31):基于Adaptive Attention的UNet设计与实践
  • 智慧社区(十一)——Spring Boot 实现 Excel 导出、上传与数据导入全流程详解
  • 【永磁同步电机数学模型全程推导】【7 转矩方程】
  • IntelliJ IDEA 2025.2 重磅发布
  • 移动端音频处理实践:59MB变声应用的技术实现分析
  • 【GPT入门】第43课 使用LlamaFactory微调Llama3
  • GitLab 零基础入门指南:从安装到项目管理全流程
  • 复杂项目即时通讯从android 5升级android x后遗症之解决 ANR: Input dispatching timed out 问题 -优雅草卓伊凡
  • Android Intent 解析
  • 绕过文件上传漏洞并利用文件包含漏洞获取系统信息的技术分析
  • GPT OSS深度解析:OpenAI时隔6年的开源模型,AI民主化的新里程碑?
  • ubuntu 安装内核模块驱动 DKMS 介绍
  • RL代码实践 02——策略迭代
  • IDEA 如何导入系统设置
  • Go语言中切片(Slice)的拷贝
  • IDEA 快捷编辑指南
  • Mybatis学习之动态SQL(八)
  • 大型动作模型LAM:让企业重复任务实现80%效率提升的AI技术架构与实现方案
  • android 使用openimagelib OpenImage 实现点击放大图片,浏览
  • 计算机网络---IP(互联网协议)
  • MySQL(190)如何优化MySQL的网络传输?
  • Mysql系列--5、表的基本查询(下)
  • 【后端】Java 8 特性 `User::getId` 语法(方法引用)介绍
  • 五种Excel表格导出方案
  • Java学习第一百二十三部分——HTTP/HTTPS
  • 18.3 全量微调:数据预处理之清洗与准备