【番杰的学习笔记】关于“指针”的那些事儿

【番杰的学习笔记】关于“指针”的那些事儿

0.前言

最近为了回答几个小伙伴的问题,找了挺多的只指针的知识,在此记录一下,本人也是一位小萌新,若有帖子中出现错误,还请大家谅解,同时也请大家批评指出问题。
另外:这个帖子,我会不定时的添加或修改一些内容的。

1.指针

以char *p 为例:
(1)指针p中存放的是地址,指向char类型数据的地址。
(2)指针p的大小是int类型(不同的编译器的int大小不同,本贴中的int类型大小均视为4字节),而不是char类型,char代表的是p指向的那个地址中的数据类型,
同时char也代表指针p的步长,即p每次移动的长度;
例如:指针p指向的地址为0,那么p+1则指向的地址是1。(步长为1个字节)
若使用int 定义指针p:int *p,
指针p指向的地址为0,那么p+1则指向的地址是4.(以int为4字节为例,此时步长为4字节)。

2.指针数组

以char *p[2] = {“Fan”,“Jie”}为例:

(1)指针数组,说白了,它还是一个数组,只不过它存储的是“指向char类型的指针”。
(2)p的大小:8字节,数组中存放了2个指针,一个指针的大小是4字节(int类型),2个当然是8字节啦!(不懂的小伙伴赶紧回去好好看看上面的“1.指针”)。
(3)取值:此时p[0]的取出值是“Fan”这个字符串的首地址,
而*p[0]则是对该地址进行解引用,取出该地址中存储的值,即 ‘F’。

3.数组指针

char array[2] = {‘F’,‘J’};
以char (*p)[2] = &array为例:

(1)数组指针嘛,看名字就知道它是一个指针,一个指向数组的指针。
指针嘛,存储的一定是一个地址,指向啥就存放啥的地址,
p指向的是一个 ” char类型[2]个元素的数组 “,所以p中存储的就是 “char类型[2]个元素的数组的地址” 。
(2)p的大小:当让是4个字节啦(int类型),不管指针指向的是什么,它只要是指针,那么它的大小就是int类型(4字节)。
(3)p的步长:p指向数组,那么它的步长就是数组的大小,即2个char(2字节)。
例如:指针p指向的地址为0,那么p+1则指向的地址是2。(步长为2个字节)
若使用int 定义指针p:int (*p)[2],
指针p指向的地址为0,那么p+1则指向的地址是8.(2个int的大小,此时步长为8字节)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

番杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值