3.c++学习记录指针总结(2018年5月7日)

指针学习总结

内联函数
const 成员函数
构造函数:可以创建多个构造函数.
析构函数:没有返回值 不能有参数 只能有一个


堆栈

进栈顺序:被调用函数下一行的内存地址,其次是函数的参数,多个参数按照从右往左的顺序,最后是函数的局部变量.


用指针创建堆中空间

用关键字new创建一个堆并分配内存

int *p;
p=new int;//分配4个字节的空间

int *p=new int
*p=4//将4赋给存储区

用指针删除堆中空间

int *p=new int;
delete p;//这将释放指针所指向的内存,而不会释放指针.
p=0;//设置空指针,将指针p中保存的地址清零

在堆中创建对象

Human *p;
p=new Human//创建了一块内存空间,同时调用默认构造函数来构造一个对象,所占用内存大小根据Human类对象的成员变量来决定.
Human *p=new Human;

在堆中删除对象

可以直接删除指向该对象的指针,这样程序会自动调用对象的析构函数来销毁该对象,同时释放内存.


访问堆中的数据成员

堆中创建的对象:

(*p).get();//*号读取p指向的对象,然后再用.访问对象成员函数

使用成员指针运算符

p->get();

在构造函数函数中开辟内存空间

将类的数据成员定义为一个指针,然后在构造函数中开辟新空间,将该空间的地址赋值给指针成员,而在析构函数中则释放指针成员指向的新空间.


对象在栈与堆中的不同

堆中:超出作用域时,会自动调用析构函数释放该对象,而要手动释放,用delete objiective.


this指针

this指针记录每个对象的内存地址,然后通过间接引用运算符->访问该对象的成员,弄人情况下,this指针可以省略不写,编译器会自动在成员变量i前面加上this指针,永安里表示这个i成员是属于某个对象的.不同对象输出的this指针保存的内存地址不同.

this->i=x;//i=x;

由于this指针保存了当前对象的地址,因此可以通过该指针直接读取当前对象的数据.this指针的创建与删除是由编译器来完成的.


指针的常见错误
删除一个指针后,一*定要将该指针设置为空指针,*这是因为删除该指针只会释放它所指向的内存空间,不会删除指针.因此这个指针还存在,且仍然会指向原来的内存空间,若再使用该指针,则会出错

{

}

指针的加减运算

int *p=new int
p++;//p指向的是int变量,加1操作,将原来的内存地址增加4个字节.

常量指针

int a=2;
int *const p=&a;//它 的值不可以改变,但是指向的值是可以改变的,常量指针必须初始化
A *const p=new A;

指向常量的指针

该指针指向的整型变量是不可以修改的,但是该指针可以被修改

const int *p;
const  A* P=new A;
P=P+1;

指向常量的常指针

都不能修改

const int * const p;
//p=p+1;
//p->set(11);//都不能行

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值