当前位置: 首页 > 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.dtcms.com/a/324919.html

相关文章:

  • go加速配置(下载第三方库)
  • go语言运算符
  • Java变量的声明规则与Scanner的应用
  • 算法训练营day44 动态规划⑪ 1143.最长公共子序列、1035.不相交的线、53. 最大子序和、392.判断子序列
  • BGP实验
  • (三)全栈(部署)
  • 数学建模——回归分析
  • 解决 Linux 下 “E: 仓库xxx没有数字签名” 问题
  • C++高频知识点(十九)
  • CentOS7.9 离线安装mysql数据库
  • Python vs MATLAB:智能体开发实战对比
  • 安卓录音方法
  • Python描述符进阶:自定义文档与属性删除的艺术
  • 可视化程序设计(4) - 第一个图形窗口程序
  • 从 GPT‑2 到 gpt‑oss:解析架构的迭代
  • BandiView:高效多功能的图像查看和管理工具
  • 系统调用sigaction的工作流程
  • 算法训练之队列和优先级队列
  • Ubuntu 24.04 适配联发科 mt7902 pcie wifi 网卡驱动实践
  • MySQL的存储引擎:
  • C/C++内存管理函数模板
  • Flutter开发 页面间的值传递示例
  • 基于C语言(兼容C++17编译器)的记账系统实现
  • 虚拟机安装 爱快ikuai 软路由 浏览器无法访问/拒绝连接
  • 数据库面试题集
  • Effective C++ 条款34:区分接口继承和实现继承
  • 数据结构(17)排序(下)
  • 深度剖析 P vs NP 问题:计算领域的世纪谜题
  • Graham 算法求二维凸包
  • PG靶机 - Resourced