作者TommyKSHS (汤米)
看板NTUEE113HW
标题[教学] Pointer I
时间Wed Nov 11 01:20:21 2009
Pointer ( 指标 )
指标也是一种变数,只不过指标所储存的并不是像一般的变数所储存的东西。
它所储存的是
「位址」 ( Address )。先扯开一下,什麽是 address 呢?
所有的变数 ( 包含 pointer, reference ) 在记忆体中一定会有它们「住」的地方。
先来看看怎麽宣告 pointer
datatype *ptr;
//其中 datatype 为任一种变数型态 ( ex: int, float, char, int*, ... )
例如:
int *iptr;
int* iptr;
//请注意,这两种写法是等价的。
然後 datatype* 只能储存 datatype 型态的变数的 address。
简单来说,女宿的房号所代表的房间住的一定是女生;
而男宿…不在讨论范围之内= =
那怎麽指定 address 给 pointer 呢?
宣告时:
int a =
19;
int *iptr =
&a;
非宣告时:
iptr =
&a;
来说一下, & 是一个 operator ( 运算子,算符 )
他的功能是「取址」 ,也就是取得一个变数的位址
简单来说,就是有人对你执行了 问你:「 你家住哪?」 这个动作。
於是 &a 代表的就是 a 的 address
这样上面的指定动作应该比较好懂吧 XD
然後, pointer 的操作有另一个 operator,就是 *
* 的意义是「取值」,也就是有人去照着 pointer 上的地址去敲门问:
「里面住谁?」 这样的动作。
来个例子:
int a =
10;
int *iptr =
&a;
cout << a; // 这是 a 的数值,也就是 10
cout << &a; // 这是 a 的位置,毎次开机会不一样= =
cout << iptr; // 这是 iptr 所储存的东西,也就是 a 的位置
cout << *iptr;// 这是对 iptr 取值,也就是问 iptr 所代表的那个位置
// 存的数值是什麽。
举个廖婉君上课问过的问题
&*iptr 和 *&iptr 一样还是不一样?
答案是:一样。
理由:从上面的解释,不难发现 * 和 & 互为反函数吧 XD
然後我懒得打了= = 我要去玩跑跑卡丁车了~
--
╭═══╤═══╮ ╰═╮ ╭═╯
│ │ │╭═和平,土地,面包═╮ │ │
│ ╭═╧╧╮╤═╤═╮═╤═╤╧╮ │ │
│ │ ││ │ │ │ │ │ ╰═╤═╯
│ │ ││ │ │ │ │ │ │
╰╧╯╰═══╯╰ ╰ ╰ ╰ ╰ ╰ ─╯
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.239.191
1F:推 bcddivad:谢谢汤米老师!! 11/11 01:23
2F:推 tw00088437:谢谢汤米老师!! 11/11 01:39
3F:推 storym94374:谢谢汤米老师!! 去玩玛莉欧赛车嘛~ 11/11 05:21
4F:推 xup65p4: 谢谢汤米老师!! 大推认真有用文 11/11 07:03
5F:→ phisixersai:第2课呢(敲碗) 11/11 10:02
6F:推 schimtag168: 谢谢汤米老师!! 楼上断推了XD 11/11 13:24
7F:推 lttlstrngth: 谢谢汤米老师!! 楼上不欺负长id 11/11 14:18
8F:→ b98901056: 谢谢汤米老师!! 不欺负长id是好人XD 11/11 14:31
9F:推 tomap41017:谢谢汤米老师!! 11/11 19:06
10F:推 toshiba011:我也有在玩~ 11/11 19:41
11F:→ TommyKSHS:嘿嘿 楼上有机会来交流一下吧~ 11/11 21:06
12F:推 tw00088437: 楼上来陪我和三楼玩玛莉欧赛车 11/11 21:50
13F:推 toshiba011:我剩板车喔XD 11/13 12:13
14F:→ sciencepie:清晰易懂 11/17 12:16
15F:推 breeze4103: 汤米~~~你人好好喔!! 11/18 07:10