第二章 指针操作
在C语言中,对于任何类型T,我们都可以在T所在的内存地址处产生一个包含此对象地址的相对应的变量。如果用比较直观方式来看待这种变量,它们实际上是一种指向对象的变量,因此,这些变量被称之为指针。在C语言中指针的重要性不言而喻,但在很多时候指针被又被认为是一把双刃剑。一方面,指针是构建数据结构和操作内存的精确而高效工具。另一方面,它们又很容易被错误地使用,从而产生不可预知的软件bug。了解到这一点之后,就不奇怪为什么C语言程序员喜欢指针,而其他很多人对它深恶痛绝。无论如何,想要有效的使用C语言,我们必须对指针有透彻的了解。本章介绍了关于指针的几个重要主题,并同时介绍了几种使用指针的技术,这几种技术将贯穿整本书。
本章内容包括:
指针基础
一方面,知道理解指针的最佳方法:画图表。另一个方面是学习在使用基本指针的过程中如何避免空指针产生。
存储空间分配
存储分配是指在内存中预留存储空间的过程。理解指针与内存分配是密不可分的非常重要,当通过指针访问内存时,其意义就如同一个虚拟的菜谱一样,指针(内存地址)对应菜名,其所指向的内存空间中的数据对应着实际的菜。
数据集合与指针的算术运算
在C语言中,数据集合主要指结构和数组。指针的算术运算定义了指针的计算规则。指向结构的指针对于建立数据结构起着至关重要的作用。在C中,数组和指针一样,都是以指针算术运算的方法进行运算的。
作为函数参数的指针
通过这种方式,可以按照传引用的方法传递函数参数。在C语言传递数组或大型结构时,这是一种普遍而高效的方法。
指向指针的指针
这是一种指向指针的指针,而不是指向具体变量的指针。指向指针的指针作为函数的参数来传递是非常普遍的。
泛型指针与类型转换
泛型指针和类型转换是用来跨越C语言类型系统一般规则的途径。泛型指针指向某一数据而不需要理会数据的具体类型。类型转换允许我们临时的改变数据的类型。
函数指针
指针指向可执行代码段或指向调用可执行代码段的信息块,而不是指向某种具体数据。它们把函数当作一小段数据来存储和管理。
PS:
1、此书(Mastering Algorithms with C)译稿版权归本人(Love_Lei)及好友(bigship)共同所有,未经本人同意谢绝一切转载,并不得抄袭,模仿,盗版!更请大家监督盗版之人!
2、由于本人水平有限,如对译文有任何建议和异议,欢迎大家留言指正,我们共同讨论学习!谢谢!