C/C++指针与内存管理

本文深入浅出地讲解了C/C++中的指针概念,包括内存区域划分、指针与变量的关系、不同类型指针,以及在数组中的应用。重点阐述了如何在下位机开发中有效利用指针,避免冗余和性能损失。通过实例演示,提升开发者对内存管理的理解和实践能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

指针和内存管理始终是C/C++比较容易模糊的知识点,但在C/C++编程中又绕不开的地方,特别在下位机上,会频繁的与指针打交道,如果概念模糊,一不小心就会写出冗余的代码,可能会引起多余内存开销或者直接影响运行速度。

一.指针

1.计算机内存主要分成这几个区,每个区又分成无数个字节(Byte),每个字节(Byte)都有唯一的编号,而这个编号就这个字节的指针地址。一般程序能读写的区域只有全局变量、堆区、栈区。下面是计算机内存的示意图:
在这里插入图片描述
每个字节(Byte)对应的编号地址就是指针地址:
在这里插入图片描述
在X86的系统上,每个字节(Byte)都由8位(bit)组成:
在这里插入图片描述

2.指针与变量
当定义一个变量的时候,比如 int a = 1025,在X86 系统下IDE会在栈中申请连续的4个字节(Byte)的大小用来存放这个数。如下图:
在这里插入图片描述
这个字节大小可以用sizeof(int)来查看。
在这里插入图片描述
那么对于int的变量来说,这个4个字节的编号地址就是这个变量的指针地址。
在这里插入图片描述
3.字节与bit
在这里插入图片描述
4.指向指针的指针,p存放的是x的指针地址,而t则存放的是p的地址。
在这里插入图片描述
5.堆中变量,在堆区中new了一块内存。
在这里插入图片描述

二.数组

1.一维数组
在这里插入图片描述
2.字符数组
在这里插入图片描述
3.二维数组
在这里插入图片描述

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知来者逆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值