- 3
- 0
- 约3.91万字
- 约 29页
- 2017-08-04 发布于天津
- 举报
凌乱的指针与数组.pdf
凌乱的指针与数组
mengyingchina@163.com
0 C语言的灵魂?!-2-
1 指针与地址-2-
2 指针与函数参数-4-
3 指针与数组-6-
4 地址算术运算-8-
5 字符指针与函数-10-
6 指针数组以及指向指针的指针-13-
7 多维数组-16-
8 指针数组的初始化-17-
9 指针与多维数组-18-
10 命令行参数-19-
11 指向函数的指针-20-
12 复杂声明-23-
13 令人震惊的事实:数组和指针并不相同-24-
13.1 数组并非指针-24-
13.2 数组与指针的区别-25-
13.3 为什么会发生混淆?-25-
13.4 什么时候指针和数组是相同的?-26-
13.5 为什么把数组形参当成指针-28-
13.6 数组和指针可交换性总结-28-
14 结束语-29-
15 参考资料-29-
C语言诡异离奇,缺陷重重,却获得了巨大的成功。
——DennisRitchie
0 C
0 C
00 CC 语言的灵魂?!
指针是一种保存变量地址的变量。
指针并不是因为C 语言才有的。寻址、执行这么一个过程就是计算机的基本原理。尽
管很多高级语言都没有指针,但程序的运行就是靠着不停的寻址来运行的。可执行的机器码、
全局变量、局部变量和程序返回地址等这三块二进制数都存放在内存中。而只有cpu具有计
算功能,他的计算实际上非常弱,每次只能算一个非常简单的算术运算或逻辑运算(但运算
速度惊人)。要把程序代码和变量从内存传到cpu就需要通过找寻数据在内存中的地址,然
后通过数据总线和地址总线传进 cpu运算。所以如果你了解了程序的运行机制就可以根据
地址去做很多很灵活甚至是很诡异的操作。不仅如此,你想做的所有操 作也都离不开地址。
即使让你自己去设计一个语言,你会发现,类似指针这么个概念也是不可缺少的,离开它计
算机就无法工作了。不知道是谁说的“指针是C 语言的灵魂”,确实如此。有些任务用其它
语言可以实现,但C 能够更有效的实现;有些任务无法用其它语言实现,如直接访问硬件,
但C 却可以。Pascal语言的指针哲学有点类似这样的说法:使用锤子可能会伤着你自己,所以
我们不给你锤子。C语言的指针哲学是:“给你锤子,实际上你还可以用好几种锤子。但祝
你好运!”。也就是说,C指针给我们足够的灵活性来获得代码上效率的提升,但同时要承
担相应的风险。
指针和数组之间的关系十分密切,我们将讨论它们之间的关系,并探讨如何利用这种关
系。
1
1
11 指针与地址
我们在这里假定x 与y 是整数,而ip 是指向int 类型的指针,下面的代码段说明了
如何在程序中声明指针以及如何使用运算符和*:
int x = 1, y = 2, z[10];
int *ip; /* ip is a pointer to int */
ip = x; /* ip now points to x */
y = *ip; /* y is now 1 */
*ip = 0; /* x is now 0 */
ip = z[0]; /* ip now points to z[0] */
我们应该注意,指针只能指向某种特定类型的对象,也就是说,每个指针都必须指向某
种特定的数据类型。(一个例外情况是指向void 类型的指针可以存放指向任何类型的指针,
但它不能间接引用其自身。)
最后说明一点,由于指针也是变量,所以在程序中可以直接使用,而不必通过间接引用
的方法使用。例如,如果iq是另一个指向整型的指针,那么语句
iq = ip
将把 中的值拷贝到 中,这样,指针 也将指向 指向的对象。
ip iq iq ip
下面通过分析C程序的机器级实现来更好的理解指针与地址的关系。
-2 -
考虑下面所示的数据交换函数,既有C
您可能关注的文档
- 中性硅酮胶简介.docx
- 中文版_2544雾锡.pdf
- 中星9号电脑刷机教程!(图文).doc
- 丹参多糖提取工艺研究.pdf
- 主板各种插针接口与机箱插头的接法.doc
- 主板选购技巧.docx
- 乙烯装置急冷油系统减粘技术的研究进展.pdf
- 产线焊接教育训练.pdf
- 亲子蝴蝶结折纸_百度经验.pdf
- 人教版五年级数学上册《天平游戏》课件.ppt
- 2025广东广州市天河区拟招聘英语实习老师1人备考题库附答案.docx
- 2025广东广州市天河区城市管理第二保洁所招聘编外工作人员4人笔试备考试卷附答案解析.docx
- 2025广东广州市越秀区流花街道办事处招聘综合事务中心辅助人员1人笔试历年题库附答案解析.docx
- 2025广东广州市花都区新雅街清初级中学招聘临聘教师1人备考历年题库带答案解析.docx
- 2025广东广州市天河区城市管理第二保洁所招聘编外工作人员4人笔试备考试卷带答案解析.docx
- 江苏省盐城市东台市三仓镇区中学2026届八年级数学第一学期期末教学质量检测试题含解析.doc
- 2025广东广州市天河区城市管理第二保洁所招聘编外工作人员4人备考题库带答案解析.docx
- 江苏省盐城市亭湖区2026届数学八上期末考试试题含解析.doc
- 安徽省蚌埠市淮上区2026届数学八年级第一学期期末达标检测模拟试题含解析.doc
- 2025广东广湛城旅游轮有限公司招聘备考历年题库附答案解析.docx
原创力文档

文档评论(0)