栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

【番杰的学习笔记】关于“指针”的那些事儿
  • 0.前言
  • 1.指针
  • 2.指针数组
  • 3.数组指针

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字节)。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/303979.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号