之间有什么区别
char *foo
和
(char *) foo
Objective-C中的?
以下是两种情况的示例:
1. @interface Worker: NSObject { char *foo; }
2. - initWithName:(char *)foo
答案 0 :(得分:6)
您的第一个表达式可以出现两个位置。第一个是变量定义。 char *foo
本身定义了一个变量 - 一个指向char
的指针foo
。在函数定义的上下文中,它定义了函数参数之一的类型:
void function(char *foo)
声明一个函数,它接受一个char *
参数,并指示该参数将在函数的上下文中由名称foo
引用。
您的另一种表达方式也有一些解释。第一个是方法定义,类似于上面的函数声明:
- (void)method:(char *)foo
声明一个采用单个参数的实例方法,在这种情况下类型为char *
并命名为foo
。它也可以显示为方法的返回类型:
- (char *)foo
另一个案例是类型转换:
void *foo;
char *bar = (char *)foo;
在这种情况下,表达式从空指针到foo
指针进行类型转换char
,并将值赋给bar
。
编辑:
对于您的具体示例:
@interface Worker: NSObject
{
char *foo;
}
此示例声明名为foo
的实例变量。它的类型为char *
。
- initWithName:(char *)foo
此示例声明一个实例方法,该方法采用名为foo
的{{1}}类型的参数。
答案 1 :(得分:1)
+ (char*) foo; // "static" function returning a variable of type char* - (char*) foo; // member function returning a variable of type char* // ... { // ... char* foo; // variable of type char* // ... } // ...
修改
- (void) whatever: (char*)foo; // member function, with // parameter foo of type char* // ... { // ... char* bar = (char*) foo; // casting variable foo to type char* // ... } // ...