※ 引述《Feis (坐吃山空)》之铭言:
: 推 M013020058: 想问,指标可以运用的地方是?目前只知道抓变量的位置 08/04 19:02
: 这问题有点广,我试着整理看看。
: 指标本质上就只是存放一个内存位址。
: 所以问题就回到为什么需要知道内存的位址。
: 很显然地,其实我们大部分的情况都不在乎这个位址,而是在乎这个位址所存放的资料。
: 存放位址只是为了间接完成某些不用指标无法完成的目的。
: 所以看到指标的使用,要思考的是它的目的是什么。
: 如果他没有任何特殊的目的,那肯定就是不该用指标。
: 因为在 C 跟 C++ 中有些使用选择上的不同,不过下面我就全部混在一起讲:
: (注: 下面的物件不专指 C++ 里的物件)
: 1. 在 C 实现参考语意: 想将某个物件作为引数传入函式,而该函式内部可以修改到原
: 本物件的内容。
: 2. 动态配置: 物件的大小会动态改变或者想让物件的生命周期不受可视范围限制
: 3. 提升呼叫函式的效率: 在 C 或早期的 C++,引数会在函式内被复制一份。如果引数
: 是复制成本比较高的类型 (例如阵列、大型结构),则传递
: 位址可以减少复制成本。
: 4. 多型: 不论是 C 的 void * 或是 C++ 里的多型,我们可以用一个指标指向不一样类
: 型的物件。
: 5. 加速编译: 宣告指标的时候,所指向的类别/结构只需要先被宣告而不需要先被定
: 义。使用这个技术可以让我们在修改定义的时候,不需要重新编译只使用
: 指标而没真正存取内容的部分。
: 6. 将不同名称的东西放在同一个阵列里: 利用指标可以将不同名称的东西也都可放在
: 同一个阵列。例如常见的函式指标阵列。
: 7. 可以表示选择性的值: null pointer 算是少数可以明确代表 "没有" 概念的东西。
: 8. 在函式间传递函式: 函式本身无法复制却可取址。所以要传递至函式中,在 C 需要使
: 用指标。
: 其他我想到再补 Orz..
非常感谢先进的分析
目前初学者小弟我为指标分类为下,并提出几个疑惑的地方。
1, 很多书籍都透过变量位址来修改/定义变量资料,但今天不是直接修改/定义变量资料
就好?为什么要绕一圈?
2,同上,是否是为了读写档案所建立指标功能?
3,以矩阵为例,可用指标来取代矩阵。而两种在内存上或其他地方哪里不一样?
4, 最后,指标能有一般变量没有的“动态”功能,所以才需要指标?
在指标上的学习,小弟我一直在想这几个问题?为何需要指标?每本书籍都把指标列为程
式码重要的地方,无法理解~~~~~
烦请先进们为小弟解惑
谢谢:)