c++系统学习笔记
来源:互联网 发布:怎么知快怀孕了 编辑:程序博客网 时间:2024/06/15 23:28
教程 范磊制作,感谢老师。
第八天笔记
1.指针是用来存储变量地址的
2.地址初始化 int *p = 0; 等同于 int *p; p = 0;
3.double a = 3.14; double *p = &a; p++ 地址加了八个字节
4.使用* 访问指针指向的值
***注意5.容易混淆的概念:
指针地址,指针保存的地址,和该地址的值
相对应的
&p ,p ,*p
6.为什么使用指针
(1)处理堆中存放的大型数据
(2)快速访问类的成员数据和函数
(3)以别名的方式向函数传递参数
7.堆栈
(1)栈区:由编译器自动分配并且释放,该区域一般存放函数的参数值,局部变量的值。
(2)堆区:一般由程序员分配释放,若程序员不释放,程序结束时,可能由操作系统释放。
(3)寄存器区:用来保存栈顶指针和指令指针
(4)全局区(静态区 static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量是放在一块区域,未初始化的全局变量和静态变量放在相邻的另外一块区域,程序结束后由系统释放。
(5)文字常量区:常量字符串就是放在这里的,程序结束后由系统释放。
(6)代码区:存放二进制代码
8.进栈顺序
9.出栈顺序
10.用指针删除堆中空间,delete p; 在没有足够的内存空间时,new 有可能返回的是0 .
11.内存泄漏
假如没有删除一个指针就对其重新赋值
12堆中创建对象
Human *p; p = new Human; 对象的大小由它的成员变量决定,加入有两个int类型的成员变量则它的大小是 2 * 4 = 8个字节
也可以合并为一句 Human *p = new Human;
13访问堆中成员数据和函数
Human a; a.data();
Human *p = new Human;
p->data();
14.对象在栈和堆中的不同
Human a;在栈中 ,会在超出作用域时 ,比如遇到main的右大括号时 ,系统自动调用析构函数,释放该对象占用的空间。
Human *p = new Human;在堆中,需要程序员自己释放内存,否则需要等到程序结束后才能回收
15.this指针
16.指针的常见错误
删除一个指针后一定要将该指针设置为空,这是因为删除该指针只会删除它指向的内存空间,不会删除指针,指针还存在,而且任然指向原来的内存空间,此时如果你
再次尝试使用该指针,程序就会出错。
17.指针的加减运算
int *p = new int(12); p++,p的地址加四个字节
18常量指针
A*const p
该指针不 可改变,但是指向的目标可改变
const A* p
相反该指针可改变,但是他指向的内容不可改变
const A* const p
指向常量的常指针
都不能改变
第九天笔记
1.按值传递
按值传递会拷贝副本 按值返回时也要建立一个副本,副本对象存储在栈中
如下图
2.按址传递
它的打印
修正后的按址传递和返回
3.使用const 指针来传递对象
const A* const func(const A* const a)
{
return a;
}
4.按别名来传递对象
引用是对象的别名 ,此处的参数是对象别名,A&指别名 ,类型也是A,不是指A 的地址
副本对象存储在栈中
A& func(A& a)
{
return a;
}
- C学习笔记 --- 学生信息管理系统
- mo+c#(vs2005)开发gis系统学习笔记
- µC/OS-II学习笔记(二) 实时系统概念
- Linux C学习笔记——Linux系统概述
- C语言学习笔记(五) -系统函数 System Function
- 【C语言学习笔记】调用系统命令system
- C++/C学习笔记
- C++IO系统学习
- 系统学习C语言
- Linux系统学习笔记
- 选课系统学习笔记
- unix系统学习笔记
- 嵌入式系统学习笔记
- django系统学习笔记
- Android系统学习笔记
- 系统程序设计学习笔记
- 系统时钟学习笔记
- ubuntu 系统学习笔记
- VIM快捷键
- MindManager怎么处理出现的C++错误
- Sign up Error:(23, 17) Failed to resolve: junit:junit:4.12
- js 高程学习总结 第七章 函数表达式
- iOS微信支付和支付宝支付
- c++系统学习笔记
- JVM的内存区域划分(面试问题:你了解java内存模型么)
- java不常用的运算符
- hdu 1076 简单处理+递归
- javascript this的一些误解
- 浅读elastic-job总结所用设计模式
- 网络配置及文件服务
- iOS开发中 关于阿里云服务器的使用与安全策略 韩俊强的博客
- GPUview使用简介