指针,内存存储及const使用
来源:互联网 发布:素描网络课程 编辑:程序博客网 时间:2024/05/13 18:18
指针,内存存储及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 0
- 指针,内存存储及const使用
- const与指针及初始化
- 从const int *, int const *, int * const 及const int * const到指针常量、常量指针
- const的指针的使用
- 关于指针中使用const
- 动态内存分配以及指针与const
- 内存分配及指针
- 指针参数传递时const指针使用
- c++ 对象/const对象/const引用/const指针/顶层const/底层const/ constexpr及常量表达式
- 关于Const常量内存使用
- this指针及const成员函数
- 使用非const指针修改const int的值
- const使用及问题总结
- const与指针搭配使用总结
- C++对指针使用const 限定符
- 形参中使用const来修饰指针
- const和指针结合使用的例子
- 娓娓道来c指针 (6)const的使用
- SharePoint 2013 托管导航及相关配置 <二>
- 台球碰撞
- iPhone像素点和常用控件尺寸
- 数据库 union,union all 详解(转)
- 自定义Dialog,如何实现浮动层,主要是dialog浮动在窗体上
- 指针,内存存储及const使用
- Jquery实现表格行的添加、删除
- AChartEngine简介
- 8款让前端开发者心动的jQuery/CSS3应用
- 查找
- 百练OJ2746: 约瑟夫问题
- 《STL源码剖析》学习--6章--power算法分析
- hadoop集群安装
- 黑马程序员_网络编程