【自用】C++学习-指针 Day 4

今天学习了指针相关知识,在这里整理复习一下。

一.定义以及相关概念

可以粗浅地理解为指针就是地址。

int* //定义一个int型指针

int* p //定义一个int型指针,取名字叫p

int a=10 //定义一个int型变量a,给a赋值10

& //取地址

&a //取变量a的地址

int* p=&a //定义一个int型指针p,p的值就是变量a在内存中的地址

int* p=&a就是对指针的定义和赋值。可以看一下下面代码

int main() {
	int a = 10;
	int* p = &a;//指针就是地址,&叫做取地址符,这一句的意思是定义一个int型的指针,它的值是a的地址
	cout << "a的地址为:" << &a << endl;
	cout << "指针p的地址为:" << p << endl;
}

运行结果如下,可以看到指针p已经指向了变量a在内存中的地址

二.取地址和解地址

上面说到&是取地址符,&a是指获取变量a在内存中的地址,获得的是类似于上图中一串16进制的地址位。p作为指针,本身就是这一串16进制的地址,那么有什么办法可以知道p指向的内存的这个地址中存放的是什么数据呢。这就用到解地址符*。与int*的含义不同,这里的*充当的是解地址符的作用,*p就可以查看p这个门牌号下住的是什么数据。可在上面代码中增加一行,代码以及结果如下:

int main() {
	int a = 10;
	int* p = &a;//指针就是地址,&叫做取地址符,这一句的意思是定义一个int型的指针,它的值是a的地址
	cout << "a的地址为:" << &a << endl;
	cout << "指针p的地址为:" << p << endl;
	cout << "*p=" << *p << endl;
}

三.空指针&野指针

当定义一个指针后暂时不知道指向哪里时可以先置空,所谓置空就是让指针不指向任何一个地址,需要知道的是,当指针被置空后就不能给这个指针的解地址赋值,会引发错误。如下图

野指针是指,当你定义了一个指针后,你让它指向a,那你随后可以读到这个地址下a的值。那可能考虑,是不是我只要有了一个指针我可以随便访问内存中任何一个地址的值?这是不可以的,野指针就是野人·,你给它分配了一个家,告诉他这是它家,那它就可以进去看看里面有什么。但是野人不能未经允许随便进别人家,这是非法的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值