7月27日汇总

本文介绍了C++中的只读变量(const)的用法,包括如何初始化和通过指针修改变量值。同时,探讨了只读指针变量和只读变量指针的概念,以及它们在内存管理中的差异。还提到了动态内存分配,如malloc函数的使用,以及栈区和堆区的区别。最后,文章强调了防止内存泄漏的重要性。

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

只读变量

只能读取不能编写,人为编写导致程序报错的变量称为只读变量。

初始化格式:const 变量类型 变量名 = 

 const     int     r=1;
   ↑        ↑      ↑
只读语法    类型  变量名 

这里要注意的是,并非const将内存空间的属性变成只读,数值依然可以修改,但需要指针。

const int i=10;
int *p;
p=&n;
*p=20;
printf("%d",i);    //输出20

 基于指针可以绕过const,需要对指针也作出限制,因而有了只读指针变量和只读变量指针。

只读指针变量 只读变量指针

只读指针变量:意思是只读指针的变量
只读变量指针:只读变量的指针

指针对于变量只读性的赋予取决于*的位置

int*const p2=&a;
*p2=10

在变量和*之间加入了const 构成只读指针变量,此时指针变量被const修饰,此时指针不能指向其他变量,否则会出错,但可以通过指针调整a的值。

int const*p=&a
*p=b;

 在指针左边插入const,此时指针的值被限制不能改变,但可以指向其他向量

int const*const p4=&a;

 const修饰了类型和指针本身,不能指向其他变量,也不能调整指针的值

特殊指针 

硬编码赋值指针

NULL

野指针

void

动态内存分配

之所以存在动态内存分配的概念,是因为对内存的分配路径有认识,定义变量时就已经给变量分配了空间,但大部分时候函数对内存的需求是不确定的,需要手动申请,通过指针的方式使用空间。因此出现管理内存的函数以动态地分配空间。

栈区堆区的区别

栈区由系统自动分配。 例如,声明在函数中一个局部变量 int b; 系统自动在栈中为b开辟空间

需要程序员自己申请,并指明大小,例如:

int *ar=NULL;
int *tr=NULL;
ar=malloc(sizeof(int)*20);
tr=malloc(sizeof(int)*40);

 上述给指针ar分配了20个整型存储单元,给指针tr分配了40个整型存储单元

malloc

calloc

内存泄漏

容易混淆的指针

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值