1

我似乎无法在客观语言中找到指针的实际用途。我知道 c# 和 java,不需要使用指针(这就是我的想法,它也被 c# 和 java 视为 dangores 编码)但现在我开始学习 Objective-c,我不明白为什么你必须总是创建指向对象实例的指针。

4

4 回答 4

2

在Objective-C(如C)中,函数的参数是按值传递的,如果你想让你的函数修改原始对象,你必须传递一个指向该对象的指针。Java 和 c# 通过引用传递参数,因此不需要指针。

于 2012-05-14T11:56:17.100 回答
1

你真的了解什么是指针吗?它只是存储对象的内存空间的地址。

因此,如果您使用指针,并将指针作为参数传递给函数,那么您只传递地址而不是完整的对象。这要快得多,因为您不必复制完整的对象,您只需通过地址访问对象的值即可。

Java 也使用指针,您不必自己担心它们。(如果您不想使用指针,这在某些情况下会很烦人。)

编辑

int nvar=2;
int* pvar=&nvar;

在这里你可以看到,如果我引用整数“nvar”,我可以将它放在指向整数“pvar”的指针中。这就是指针和引用之间的联系(在这种情况下,在 C++ 中)

于 2012-05-14T11:25:58.280 回答
1

好吧,在 c# 中你确实使用了指针,但没有明确地使用。想想委托、匿名类型等。如果您没有有效地管理对这些引用类型的使用,c# 中的垃圾收集也会受到影响。

在 obj-c 中,游戏表面稍微暴露一些。我想这种方法的缺点和优点一样多,原因正是你上面所说的内存 gpf 等的危险。

慢慢地,上口的猴子:)

于 2012-05-14T11:18:34.810 回答
1

你可以用指针做而不能用引用做的一件事就是递增它们。由于指针是一个地址(已经提到过),更改它的值使其指向数组中的下一个/上一个对象。它不是很有用,因为您可以只在数组上使用下一个/上一个索引,但在某些情况下,它可能会产生一个很小的更快的代码(尽管更脏且更容易出错)。

指针很有趣,当你习惯它们时;)

于 2012-05-14T13:15:30.653 回答