指针的目的

时间:2012-08-22 09:38:30

标签: objective-c pointers

我刚刚开始使用Objective C,虽然我对速度和学习曲线做得很好(我没有C背景) - 我不明白一个概念也是C ++的一部分 - 指针!

好的 - 我理解指针指向实际变量的物理位置,而不是变量本身的值。在地球上可以派上用场吗?

此外,何时使用它们以及何时不使用?

我已经足够用Google搜索,但我遇到的每一个指南似乎都认为我是火箭科学博士。

有人可以用一个简单的例子解释一下吗?

3 个答案:

答案 0 :(得分:2)

使用指针的主要原因之一是节省内存。例如,如果要将数组传递给函数,最好将内存中的地址发送给函数而不是发送值。

如果你继续做c或其他低级语言,那么你会发现数组和指针几乎可以互换。 (C风格的数组,不是objc中的NSMutableArrays或c ++中的向量或c#中的列表等)

答案 1 :(得分:2)

虽然它们当然是C指针,但我强烈建议理解它们对象的引用。

您可以创建一个对象或从某个地方接收它,并在varialbe中存储对该对象的引用。

当您将对象的引用传递给某个函数或方法时,此方法可以访问您移交的对象。它不需要使用数据副本。如果它对ojects的属性进行了更改(只要通过poperty声明和东西允许),那么你的引用所引用的对象就会被更改。

当然,您可以复制它,并在您认为合适时继续使用该副本。在这种情况下,原始对象保持不变。

当你真的遇到必须使用c风格指针的情况时,你最好退一步去理解C.我不认为从Objecive-C背景来看是明智的理解c风格的指针。清除你的思想,从头开始学习C,然后在非常罕见的情况下利用新的知识,你必须在Objective-C项目中处理这些基本数据类型。

答案 2 :(得分:1)

这是一个简单的原因:

想象一下,你有一个非常大的对象。 - 当你把它传递给一个函数时,你真的想复制它吗?复制整个对象? - 这将需要大量的CPU和内存。

通过使用指针,您不必在每次传递时复制原始对象。 (当然,另一方面,如果你改变了函数中的对象,它也将改变原始对象。)