objective c 中指针笔记

转载地址:([i]http://www.hengxinsoft.com/2010/12/objective-c-%E4%B8%AD%E6%8C%87%E9%92%88%E7%AC%94%E8%AE%B0/[/i])

[quote]本文章内容包含更深层次的概念并将处理一些C语言底层的概念,这些东西往往让初学者 头痛。如果你现在还看不懂也请先不要着急。尽管从大体上说理解指针的工作原理很有用,但对 Objective-C语言初级编程并不是那么重要。[/quote]

当你定义一个变量,你的Mac微机就会将这个变量和一个内存空间关联起来以便储存这个变量 的值。
看看下面的例子:
[1] int x = 4;


为了执行这个语句,你的Mac微机在内存中找到没有被占用的空间并在那里储存变量x的值(当 然我们可以使用其它的变量名)。再看例[1],指明变量的类型(这里定义的是整型)就是让电脑知 道要留出多少空间来储存变量x的值。如果数值被定义为长整型或者双精度,那么则需要更多的内存 空间。

语句行“x = 4”的任务是将数值4存入预留的空间。当然,你的电脑知道在内存的哪个空间储 存着变量x的值,换句话说,它知道x的地址(address)。这样,每次在程序中使用x,你的电脑就 能找到正确的位置(在正确的地址)并找到x的确切值。

[b][i]一个指针变量就是一个包含其它的变量地址的变量。[/i][/b]

只要存在一个变量,你能够通过在它前面写上符号“&”来得到它的地址。比如要得到x的地址 则写成“&x”。
电脑为表达式x赋值,变量x就会返回一个数值(在我们的例子中返回的数值是4)。相比之下, 当电脑为表达式&x赋值,将返回变量x的在内存中的地址而不是存储在其中的数值。地址是表示电 脑的内存一个特定位置的数值(如同房间号表示旅馆的某一个特定房间)。

这样来定义一个指针变量:
[2] int *y;


上面的语句行定义了一个名为y的变量 ,它将代表另一个整型变量的地址。将变量x的地址存储 到指针变量y中(术语叫做将x的地址指派给y)你需要这样做:
[3] y = &x;


在指针变量前面加一个星号“*”得到的是指针所指向的内存存储空间内的数值。表达式“*y” 的值是4,它等同于表达式“x”。同理,如果执行了语句“*y = 5”则等同于“x = 5”。

指针之所以有用是因为有时候你不需要变量的数值,但需要用到变量的地址。比如编写一个函 数,内容是1加上一个变量,你就会用到变量地址。这是因为你会更改变量的值,而不总是使用当 前值。因此,我们这样使用指针:


[4]
void increment(int *y) {
*y = *y + 1;
}


之后,你可以调用这个函数:
[5] int x = 4; increment(&x); // now x is equal to 5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值