关于初期指针的学习笔记与理解

字符指针变量

在指针中有一种指针类型为 char*

还存在一种使用方法:

问题1:请问这里是把一个字符串放到pstr指针变量里了吗

这里其实是把字符串的首字母地址传到了指针变量当中

《剑指offer》中收录了⼀道和字符串相关的笔试题,我们⼀起来学习⼀下:

问题2:上面代码运行结果会是如何?

这是因为:str1和str2

⽤相同的常量字符串去初始 化不同的数组的时候会开辟出不同的内存块
这⾥str3和str4指向的是⼀个同⼀个常量字符串。
C/C++会把常量字符串存储到单独的⼀个内存区域, 当⼏个指针指向同⼀个字符串的时候,他们实际会指向同⼀块内存。

数组指针变量 

存放数组的地址,能够指向数组的指针变量

例如下:

int (*p2)[10];
p先和*结合,说明p是⼀个指针变量变量,然后指着指向的是⼀个⼤⼩为10个整型的数组。所以
p是⼀个指针,指向⼀个数组,叫 数组指针
这⾥要注意:[]的优先级要⾼于*号的,所以必须加上()来保证p先和*结合。
如何获得数组的地址
如果要存放个数组的地址,就得存放在数组指针变量中,如下:

二维数组传参本质

⼆维数组起始可以看做是每个元素是⼀维数组的数组,也就是⼆维 数组的每个元素是⼀个⼀维数组。那么⼆维数组的⾸元素就是第⼀⾏,是个⼀维数组。
根据数组名是数组⾸元素的地址这个规则,⼆维数组的数组名表⽰的就是第⼀⾏的地址,是⼀
维数组的地址。根据上⾯的例⼦,第⼀⾏的⼀维数组的类型就是 int [5] ,所以第⼀⾏的地址的类
型就是数组指针类型 int(*)[5]
⼆维数组传参本质上也是传递了地址,传递的是第⼀ ⾏这个⼀维数组的地址

19行中传递了二维数组名地址,即二维数组首地址,也就是第一行的地址 int (*p) [5]

11行*(*(p+i)+j)可以理解成(*p)[i][j]

函数指针数组
那要把函数的地址存到⼀个数组中,那这个数组就叫函数指针数组,那函数指针的数组如何定义呢?

parr1 先和 [] 结合,说明 parr1是数组,数组的内容是什么呢? 是 int (*)() 类型的函数指针。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值