为什么我不能像这样使用struct?
typedef struct { unsigned char FirstName; unsigned char LastName; unsigned int age; } User;
User UserNick = {Nick, Watson, 24};
NSLog(@"Your paint job is (R: %NSString, G: %NSString, B: %u)",
UserNick.FirstName, UserNick.LastName, UserNick.age);
我的意思是我确实使用了这样的结构:
typedef struct {unsigned char red; unsigned char green; unsigned char blue; } Color;
Color carColor = {255, 65,0};
NSLog(@"Your paint job is (R: %hhu, G: %hhu, B: %hhu)",
carColor.red, carColor.green, carColor.blue);
答案 0 :(得分:7)
如果您想使用C字符串,则需要以下代码:
typedef struct { unsigned char *FirstName; unsigned char *LastName; unsigned int age; } User;
User UserNick = {"Nick", "Watson", 24};
NSLog(@"Your paint job is (R: %s, G: %s, B: %u)",
UserNick.FirstName, UserNick.LastName, UserNick.age);
C字符串为char *
。 C字符串文字需要在引号中。 %s
是C字符串的格式说明符。
另一个建议 - 用小写字母开始字段名称(和变量名称)。
由于你正在使用Objective-C,如果你让User
成为真正的班级而不是struct
,你可能会变得更好。然后,您可以使用属性和适当的内存管理。名称可以是NSString
而不是C字符串。这样可以很容易地将对象存储在集合中,并使用普通的struct
执行其他有用的操作。
答案 1 :(得分:1)
在您的定义中,FirstName
是一个无符号字符,这意味着它是一个只能包含一个char
作为其值的变量。但是,Nick
是一个字符串,即一个字符数组。
一个人可以做到
typedef struct {
unsigned char * FirstName;
unsigned char * LastName;
unsigned int age;
} User;
User Nick = {"Nick", "Watson", 24};