Re: [问题] 自己练习运用基础的指标小问题

楼主: Feis (永远睡不着 @@)   2015-08-04 19:36:06
推 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..
作者: M013020058 (帅翰)   2014-08-04 19:02:00
想问,指标可以运用的地方是?目前只知道抓变量的位置
作者: x000032001 (版废了该走了)   2015-08-04 19:41:00
function pointerlist tree等结构
楼主: Feis (永远睡不着 @@)   2015-08-04 19:44:00
list, tree 基本上就是动态配置实际上 list 跟 tree 不一定要用指标
作者: MOONRAKER (㊣牛鹤鳗毛人)   2015-08-04 22:17:00
实用上很难不用指标,用阵列实作很浪费空间,而如果要先做一个pool给tree/list用-那就是list。再不然就是树很小list很短
楼主: Feis (永远睡不着 @@)   2015-08-04 22:40:00
大小跟长短不是问题动态配置重点是动态. 实务上很多都是用阵列实作的主要是树跟串行的性质还有使用情况当然我说的很多不是比较多的意思主要问题还是一般情况下阵列能配置的大小受到限制上面说的阵列跟指标是不冲突的. 我发现这样说会有误会.我自己都乱掉了 QQ
作者: qas612820704 (Lego)   2015-08-05 00:10:00
请详读资料结构使用c或是c++ 你会收益良多
作者: stupid0319 (征女友)   2015-08-05 00:45:00
写游戏外挂也要用到大量指标
作者: firose (guest也是也是也是也是也)   2015-08-05 12:35:00
共享函式酷的输入表也是指标做的才可以编译期 link 执行期 binding

Links booklink

Contact Us: admin [ a t ] ucptt.com