【发布时间】:2013-07-07 01:18:55
【问题描述】:
过去我主要使用 .NET 进行编程,因此我不必特别担心指针之类的事情,但最近我进入了 Objective-C,我决定尝试并完全理解内存管理的工作原理。
所以,首先我想说的是,我知道你不应该为 int 指定指针,因为它无助于提高效率,但这主要是出于好奇而进行的实验。
如果我这样创建一个整数指针: 整数 *intPointer; 当我这样做时,为什么实际上是指针指向的内存位置被分配:
intPointer = 43;
据我了解,这样的操作不应该是改变指针的实际内存地址吗?
这段代码也是如此:
int *intPointer;
int integer;
integer = 43;
intPointer = integer;
同样的结果,但是当我使用 CLLocationCoordinate2D 并试图使指针指向 CLLocationCoordinate2D 变量时,我实际上不得不这样做:
CLLocationCoordinate2D *coordinatePointer = &coordinate;
在我看来,这似乎是正确的方法。
这是我在 stackoverflow 上的第一篇文章,我希望它足以得到回答。 谢谢!
【问题讨论】:
-
我建议购买 Bill Dudney 的电子书,在 iBooks 商店中您需要知道的所有 C。这将为您提供一个很好的 C 介绍,同时考虑到 Objective-C。
-
坏代码气味难闻。你几乎从不在 Objective-c 中使用 & 运算符。
-
@bbum - 几乎从来没有?
NSError **... -
你永远不应该说
intPointer = 43;。那就是为指针分配一个虚假的值,使指针不再是有效的指针。 (在进行更多编程之前,请阅读一些好的 C 书籍——拜托。) -
@CRD 他的观点是输出参数很少见。您最后一次使用非错误相关的输出对象参数是什么时候(有充分的理由)? C 疯狂地使用它们进行计数和模拟多个返回。
标签: objective-c xcode variables pointers