我刚刚开始学习Objective-C,来自VB .Net和C# .Net背景。我理解指针的用法,但在Objective-C示例中,我看到星号放在几个不同的位置,尽管我可能会搜索,但我无法找到原因的答案。我尝试的每一次搜索都会找到关于指针的各种解释(我真的不需要),但没有提到星号不同位置的原因/影响。下面是我见过的一些例子:
NSString *string;
NSString * string;
(NSString *) string;
NSString* string;
星号的这些不同位置是什么意思?我相信这是一个简单的答案,但令人沮丧的是,到目前为止,无法在任何Apple教程和参考文档中或在线上找到它。
有人能结束我的痛苦并回答这个令人困惑的问题吗?谢谢!
发布于 2009-10-05 17:34:43
这没有区别,但是您应该知道,只有第一个“标记”(所谓的“标记”)定义了类型名称,而*不是类型名称的一部分。也就是说:
NSString *aString, bString;
创建一个指向NSString
的指针和一个NSString
。要使两者都成为指针,请执行以下任一操作:
NSString *aString, *bString;
或者:
NSString *aString;
NSString *bString;
发布于 2009-07-09 19:00:27
1. NSString *string;
2. NSString * string;
3. (NSString *) string;
4. NSString* string;
1、2和4完全相同。这都是风格。你可以随心所欲地挑选,或者把它们混在一起。
选择#3还有另一个含义,它用于铸造。例如:
t = (NSString *)string ;
会将string
强制转换为NSString
指针。
但选择#3是您可能会在.h文件或.m文件的函数定义中使用的语法。在一个实际的函数中,在"run“的代码中,它有不同的含义。
发布于 2009-07-09 18:56:15
没有区别--这是风格的问题。它们都声明了一个名为string
的变量,这是一个指向NSString的指针。在某些上下文(特别是方法声明)中,括号是必需的,以便澄清它是一个类型声明。
https://stackoverflow.com/questions/1105815
复制相似问题