C++指针心得

本文详细探讨了C++中的指针,包括指针的基础知识,如如何定义和解引用,以及二维指针、引用、const指针、指针与数组的关系、动态内存分配和函数指针等高级概念。通过实例解析了指针操作的细节,帮助读者深入理解C++指针的本质。
摘要由CSDN通过智能技术生成

指针定义的时候是指向一个地址,如:

int a = 10;

int *b = &a;

b中存储的是a的地址,解引用可以得到地址为a的变量的值,即*b


既然指针存储的是地址,那么二维指针指向的就是地址的地址,如:

int a = 10;

int *b = &a;

int **c = &b;

因为解引用得到的是值,那么指针存放的就是地址,因此c中存的是b的地址,*c就是b中的值,即a的地址

所以,如下代码:

int *p = *c;

因为*c是a的地址

那么代码等同于

int *p = &a;

int *p = b;


引用的用法是:

int a = 10;

int &b = a;

当对b复制的时候,如:

b = 30;

此时不是像对变量复制的过程那种在堆栈中新增加一个变量,找到变量b所在的地址,b地址存放的值是变量a的地址,因此给b赋值的过程如下:

找到变量b的地址,读取该地址下的值,即a的地址,之后通过a的地址,修改a地址下的值为30

如果引用过程中涉及类型转换,如:

double a = 3.14;

int &b = a;

b = 7;

实际上b没有改变a的值,因为对于有类型转换的引用,编译器实际是这样处理的:

int temp = a;

int &b = temp;

b = 7;

所以b更改的是临时的中间变量temp,而不是a


指向const的指针和const指针:

指针的读法是从右向左读,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值