指针数组和数组指针_如何理解二级指针作为指针数组的形参

本文详细介绍了C++中的二级指针概念,它是指向指针的指针,用于存储一级指针的地址。通过一个示例代码展示了如何使用二级指针作为指针数组的形参,并解释了参数传递过程中二级指针如何指向数组的各个元素。内容涵盖了指针数组的存储原理以及二级指针在实际操作中的运用。
摘要由CSDN通过智能技术生成

二级指针是指向指针的指针,因为指针存放的是地址,所以二级指针是指向一级指针本身的地址,而非一级指针所指向的某块内存的地址。

二级指针作为指针数组形参的示例代码如下:

1 


结果:
Hello
koko
Nice!


注意:这里的指针数组存放了三个字符串"Hello"、"koko"、"Nice!",字符串名就是字符串首元素的地址,比如"Hello"就是字符'H'的首地址。

89f90acb3837d197df6dc67bd6077419.png

如上图所示:

① 由于指针数组arr[]存放的是char *型的指针,而字符串名就是字符串首元素的地址,所以数组的指针元素可以存放"Hello"、"koko"、"Nice!"这3个字符串。

二级指针是指向指针的指针,而指针存放的是内存的地址,即二级指针存放的是一级指针本身的地址,由于指针数组以数组名arr作为实参传递给函数display(char **ptr, int len)中的形参ptr,数组名是数组首元素的地址,而数组arr每个元素都是指针,也就是将首元素即指针本身的地址传递过去,因为二级指针指向的是一级指针本身的地址,所以**ptr=arr是成立的,也就是二级指针可以作为指针数组的形参,数组传递后的接收结果如上图里面的ptr=&arr[0]、ptr+1=&arr[1]、ptr+2=&arr[2],二级指针ptr指向了指针数组arr。

③ 在程序源码里面的第7、8、9行有三种二级指针的打印方式,%s输出的是字符串类型,作用是从字符串的首地址输出直到遇到空字符0为止

ptr[i]就是arr[i]即字符串名(字符串名是地址,可以用%s输出)

*(ptr + i)=*(&arr[0]+i)=*(&arr[i])=arr[i]

*(&ptr[0] + i)同上


④ 使用char *ptr[100]、char *ptr[]和char **ptr作为数组指针的形参都是相同的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值