首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >星号在Objective-C中的位置

星号在Objective-C中的位置
EN

Stack Overflow用户
提问于 2009-07-09 18:52:34
回答 14查看 10.6K关注 0票数 55

我刚刚开始学习Objective-C,来自VB .Net和C# .Net背景。我理解指针的用法,但在Objective-C示例中,我看到星号放在几个不同的位置,尽管我可能会搜索,但我无法找到原因的答案。我尝试的每一次搜索都会找到关于指针的各种解释(我真的不需要),但没有提到星号不同位置的原因/影响。下面是我见过的一些例子:

NSString *string;
NSString * string;
(NSString *) string;
NSString* string;

星号的这些不同位置是什么意思?我相信这是一个简单的答案,但令人沮丧的是,到目前为止,无法在任何Apple教程和参考文档中或在线上找到它。

有人能结束我的痛苦并回答这个令人困惑的问题吗?谢谢!

EN

回答 14

Stack Overflow用户

发布于 2009-10-05 17:34:43

这没有区别,但是您应该知道,只有第一个“标记”(所谓的“标记”)定义了类型名称,而*不是类型名称的一部分。也就是说:

NSString *aString, bString;

创建一个指向NSString的指针和一个NSString。要使两者都成为指针,请执行以下任一操作:

NSString *aString, *bString;

或者:

NSString *aString;
NSString *bString;
票数 33
EN

Stack Overflow用户

发布于 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“的代码中,它有不同的含义。

票数 24
EN

Stack Overflow用户

发布于 2009-07-09 18:56:15

没有区别--这是风格的问题。它们都声明了一个名为string的变量,这是一个指向NSString的指针。在某些上下文(特别是方法声明)中,括号是必需的,以便澄清它是一个类型声明。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1105815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档