指针,内存存储及const使用

指针,内存存储及const使用

一 指针的使用

[申明指针]
type *pointername;
如int *pVariant;
[初始化指针]
(1)可以将变量名应用&操作赋,将变量的地址赋给指针,来获取被命名的内存的地址
(2)使用new操作符返回未命名的内存地址赋给指针
[注意事项]
指针申明后,在编译阶段系统并没有对指针分配内存空间,直接对指针变量pVariant赋初值会出现Segmentation fault 例如:int *pVariant=4; 原因是系统还没有分配内存给pVariant,所以没有地方存放常数4

与普通变量初始化不同如int pVariant;编译阶段,系统就分配了内存给变量pVariant,所以可以进行操作pVariant=4;

二 C++的三种管理内存的方式

自动存储, 静态存储, 动态存储(有时也叫做自由存储空间或堆)
1 自动存储方式----内存在栈上创建
在函数内部定义的常规变量使用自动存储空间,也被称为自动变量(automatic variable),他们在所属的函数被调用时自动产生,在该函数结束时消亡。

2 静态存储(static)----内存在静态存储区域分配
从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。

3 动态内存存储---从堆上分配内存
一种比自动变量和静态变量更灵活的方法,从一个内存池中申请分配内存。程序在运行的时候用malloc或new从内存池中申请任意多少的内存,内存池同用于静态分配和从栈上分配的内存是分开的。malloc或new允许在一个函数中分配内存,而在另一个函数中用free或delete释放内存,因此数据的生命周期不完全受到程序或函数的生命周期的控制了。与常规变量相比,使用new和delete使程序员对程序如何使用内存有更大的控制权。

三 const使用


int nVariable;          //编译阶段已经在栈上分配了内存,所以地址&nVariable不可变,地址对应的值nVariable可变
const int nVariable;    //地址&nVariable不可变,值nVariable也不可变,所以一般使用是申明和初始化同时进行,如const int nVariable=3;

int *pVariable; //编译阶段没有分配内存,所以地址pVariable可变,地址pVariable指向的值value也可变。初始化有两种方式,见上面。
//结合const 就有三种情况
const int *pVariable; //地址pVariable可变,地址pVariable指向的value不变, 如pVariable=new int;
int *const pVariable; //这是一个常指针,不可以进行++或者--操作,地址pVariable不可变,地址指向的值value不变
const int *const pVariable; //地址pVariable不变,指向的值也不变。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值