C++学习(二)——指针与动态内存分配
2016-04-24 20:30
971 查看
指针与动态内存分配
变量的地址变量a占用的是内存的2000~2003四个单元,变量a的地址为2000。源代码中写a=5;我们可以理解为将5赋给变量a;而计算机在执行程序时,只是将5送入2000~2003四个存储单元中。
2. 程序内存结构
- 代码段:程序代码,由exe文件中相应内容载入内存后形成,只读
- 静态数据区:全局变量、静态数据成员和静态局部变量。全局变量在程序启动后占用存储空间;静态局部变量在第一次执行时创建
- 栈区:局部变量、函数参数与返回值,由操作系统自动维护
- 堆区:由程序员动态请求的数据区,运行时确定,由程序员负责申请和释 放
3. 动态内存分配
使用new请求内存时,可能由于内存不足会造成失败,应该随时进行检测。
int *p; if((p=new int) == NULL) { cout<<“error”<<endl; exit(0); } *p=5; …… delete p;4. 指向常量指针、常指针、指向常量的常指针
指向常量指针
const char *pc=“abcd”; 或char const *pc=“abcd”; //pc所指向的字符串不能被修改。
常指针
char * const pc=“abcd”;//pc不能指向别的字符串,但可改变指针所指向的内容 pc[2]=‘a’;
指向常量的常指针
const char * const pc=“abcd”;//pc不能指向别的字符串,也不能改变指针所指向的内容。
函数及参数传递
值传递
函数的参数是局部变量int sum(int a,int b) { return a+b; } int main() { int x(5),y(4); cout<<sum(x,y)<<endl; return 0; }
指针传递
void xhg(int *a,int *b) { int *tmp; tmp=b; b=a; a=tmp; } int main() { int x(5),y(4); xhg(&x,&y); cout<<x<<‘ ‘<<y<<endl; return 0; }
引用传递
void sum(int &a, int b) { a+=b; } int main() { int x(5),y(4); sum(x,y); cout<<x<<endl; return 0; }
相关文章推荐
- LeetCode 226. Invert Binary Tree C语言
- C++第4次作业
- C语言
- LeetCode 104. Maximum Depth of Binary Tree C语言
- C++的4种类型转换关键字及其特点
- c++实现4阶矩阵或行列式的计算
- LeetCode 258. Add Digits C语言
- C语言指针高级七
- LeetCode 292. Nim Game C语言
- C语言数组三
- c语言基础深入理解二
- c语言深入理解基本概念
- C++中不能声明为虚函数的有哪些函数
- LeetCode 344. Reverse String C语言
- C++数组名和指针的区别
- C++ primer第二节笔记
- C++ URLEncode编码
- C++ 语法学习
- C++ 琐碎知识总结 - 2
- java与C++语法上的差别