- 0
- 0
- 约 6页
- 2017-08-02 发布于河南
- 举报
HYPERLINK /share/236009694/3477968962 \l nogo#nogo
1.关于指针的理解 来源: HYPERLINK /GetEntry.do?id=494315797owner=228995646 \t _blank 廖宇晨的日志
从普通变量开始
例如?int a = 38;
变量有一个值 38
变量有一个名为 a
变量还有一个在这个程序中看不见的在内存中的地址假设是 0x0022FBD0
变量的类型是 int, 占 4 个字节(32 位)
?? ?这个上面这个图大体表示了一下这个组织形式,其实可以把这个东西直接与现实中的信箱来
对比. 只不过在计算机的世界里面,一个邮箱能且仅能装一封信(^-^).
?
(另外,不管是在计算机系统还是在邮局系统中,邮递员都只认信箱号而不知道用户到底是张
三还是李四.)
?
小宇一天收到了一封这样的信:
然后怀着激动的心情去 63 号邮箱去收信
上面这个例子就是一个类似于使用指针的过程, 先看代码:
?? ? ??int a = 38;
??? ? ?int *p = a;
?
在这里,p 里面存的东西其实就是 a 的地址, 我们把这种存着地址的变量叫做指针
注意一下,p 也有自己的地址 0x001EFAA8, 那么现在要是有一个变量, 它里面存 p 的地址呢?
?? ? ? ? ? ? ? ? ? ? ???int **s = p;
我们把这种东西是一种特殊的指针叫做指向指针的指针, 一开始听上去挺唬人的是吧. 其实也就是那么回事
练习一下
好了,来做练习:请写出上文中 p, *p, p, *s, **s, *s 的值,思考之后看解答
?
(1) p: ? ? ? ? ? ?0x0022FBD0
p 这个变量的值是什么呢?存的是 a 的地址 0x0022FBD0
(2) *p: ? ? ? ? ? ? ? ? 38
*p 这个操作是求 p 存的那个地址所存的值也就是 a 的值 38
(3)p: ? ? ? ? ? ?0x001EFAA8
p 就是 p 这个变量是在哪个位置存着的,也就是 p 的地址 0x001EFAA8
(4)*s: ? ? ? ? ? ?0x0022FBD0
这个题目其实是让你复习一下第(2)题中的概念的
*操作符,取的是 s 存的地址所存的值, 也就是 p 的值 0x0022FBD0
(5)**s: ? ? ? ? ? ? ? ? 38
(6)*s: ? ? ? ? ? ? ? ? 0x001EFAA8
*s 就是 p, p 就是 p 的地址 0x001EFAA8
这里也可以看出来和*其实是一对相反的运算,可以相互抵消掉, *s 就是 s
(注,1-3 题的答案和 4-6 题的答案是完全一样的)
------------------------------
一些杂的东西
可能你会对指针在声明时候的初始化感到疑惑
?? ? ? ? ? int *p = a;
?
*p 明明就是取值了么, 为什么还是把 a 的地址赋给它呢?
?
其实是这样的, int*是类型,而 p 是这个类型的一个变量, 所以这个地方其实是一个对 p 的赋值语句
---------------
那么既然 int*才是类型,那为什么不写成
?? ? ? ? ? ?int* p = a;
让程序的意思更加明确呢?
其实这个地方的考虑是这样的, 请看:
?? ? ? ? ? ?int* p, p1;
请问p1这个东西是指针还是普通变量?
答案是普通变量, 这个*是带在p上面的, 但是这个*却又是类型声明的一部分.
要让p1也是指针, 就要写成这样
?? ? ? ? ? ?int* p, *p1;
为了不引起混淆, 所以我一般把这个*号和p粘在一起而不是紧跟在int之后
?? ? ? ? ? ?int *p, p1;
你看这样多清晰~
----------------------------
?
接下来看一段程序
struct lyc{
?? ? ?int a;
}*p, l;
int main()
{
?? ? ?p = l;
?? ? ?l.a = 10;
?? ? ?printf(%d\n, (*p).a);
?? ? ?printf(%d\n, p - a);
?? ? ?return 0;
}
输出的结果很简单:
10
10
写这个就是想说一下p - a其实就是(*p).a, 最初做这样的设定的原因就是书写更方便一下而已了. 所以l - a这样的东西是绝对不行的, l.a才行.
=================
这篇文是去年这时候我给几位需要考研机试的好友写的一系列文中的第一篇。当时只是觉得指针是基础而且一般不是很可以融汇贯通的理解,所以第一篇
您可能关注的文档
- 初三试卷 语文 (四).doc
- 1-12名胡莱三国武将排名与技能搭配.doc
- 初三思想品德周周练三.doc
- 初三文言文比较阅读.doc
- 初三文言文上(单字解释).doc
- 初三语文1暑假作业检测李新凤(1).doc
- 初三语文3《陈涉世家》第一课时孙艳.doc
- 1-12名胡莱三国顶级武将排名与技能搭配.doc
- 初三语文15分钟练习3.doc
- 11章结构体与共用体.ppt
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
最近下载
- 药品生产过程中的清洁生产与环境保护策略.docx VIP
- 2023年日历表带节假日全年一页打印版.docx VIP
- 铁路项目监理人员岗位职责.docx VIP
- 【初中 物理】电磁波的应用课件 2025-2026学年沪科版九年级全一册物理.pptx VIP
- 第14篇 世界屋脊——藏族高原游牧文化旅游区.ppt VIP
- (人教版)数学五年级下册计算题“天天练”习题卡,含108份题组.pdf VIP
- 基于组织学视角的异种脱细胞真皮基质研究:动物筛选、制备工艺与体内植入初探.docx VIP
- 2025年度宜都市高新技术产业投资有限公司公开招聘8人(第二批)笔试备考题库及答案解析.docx VIP
- 初中地理新课程标准及解读精选全文.pptx VIP
- 《工业机器人技术基础》考试试卷练习题附答案.pdf VIP
原创力文档

文档评论(0)