函数运行 形参实参变化 内存空间_C++日志(二十)指针运算、空指针、处理数组、指针作为函数参数...

4804bb70b4e61b345cbcc7469f07e8cc.png

1、指针运算

指针的运算包含:算术运算、关系运算和赋值运算,运算的结果和指针指向对象的类型有关,比如float类型的指针+1将会偏移4个字节:

float 

通过地址的偏移,可以访问连续的内存空间,采用*(pointer+偏移量)的方式,可以访问当前pointer指向地址的“偏移量”处的内存空间,比如*(pointer+n)表示pointer类型偏移“n”个类型长度后的地址处的值 ,等价于pointer[n]

float 

2、空指针

指针定义以后,如果没有对指针进行赋值,以指定其所指向对象的地址,那么这个指针如果被误用就可能导致安全问题。为此,C++提出了空指针的概念,通过对指针赋值为0或者NULL即为空指针

float 

void类型的指针表示不确定指向类型的指针,这和空指针是有区别的。

3、处理数组

数组的名称表示数组的首地址,首地址就是数组首个元素的地址,也就是说数组名称和数组首元素的地址等价,数组首元素的地址为“&d数组名[0]”,例子如下:

/// 下面用数组名和数组首元素,都可以获得相同的地址,即数组首地址

因此,可以采用数组名和指针两种方式对数组进行访问:

int 

4、指针数组

C++中,同类型的指针的集合构成的就是指针数组,指针数组的名称依旧表示该数组的首地址,数组中每个指针的使用和基本的指针符合相同的规则。声明指针数组的语法如下:

数据类型 

指针数组的使用即元素的使用,指针数组中第i个元素为“数组名[i]”,即数组中第“i”个指针。根据指针的基本用法可知,可以使用“数组名[i]+偏移量”的方式,获得指针元素指向的连续地址。

/// 1、定义多个一维数组

5、使用指针作为函数参数

如果数据的存储区域是连续的,那么通过指针作为实参,将数据的首地址传递给函数的形参,就能实现高效的数据传递。此时,由于指针作为函数参数时,传递的是地址而不是值,所以对形参的修改会影响实参。下面定义的函数的参数为指针,只要将想要操作的变量地址作为实参,那么对形参的修改就会影响到实参:

void 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值