为什么我不能像这样使用结构?
why cannot I use struct like this?
为什么我不能这样使用结构?
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);
如果您想使用 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
设为真正的 class 而不是 struct
,您最终可能会过得更好。然后您可以使用属性和适当的内存管理。名称可以是 NSString
而不是 C 字符串。这使得将对象存储在集合中以及做其他有用的事情变得容易,而这些事情很难用普通的旧 struct
.
在您的定义中,FirstName
是一个无符号字符,这意味着它是一个只能保存一个 char
作为其值的变量。但是, Nick
是一个字符串,即一个字符数组。
一个人可以做到
typedef struct {
unsigned char * FirstName;
unsigned char * LastName;
unsigned int age;
} User;
User Nick = {"Nick", "Watson", 24};
为什么我不能这样使用结构?
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);
如果您想使用 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
设为真正的 class 而不是 struct
,您最终可能会过得更好。然后您可以使用属性和适当的内存管理。名称可以是 NSString
而不是 C 字符串。这使得将对象存储在集合中以及做其他有用的事情变得容易,而这些事情很难用普通的旧 struct
.
在您的定义中,FirstName
是一个无符号字符,这意味着它是一个只能保存一个 char
作为其值的变量。但是, Nick
是一个字符串,即一个字符数组。
一个人可以做到
typedef struct {
unsigned char * FirstName;
unsigned char * LastName;
unsigned int age;
} User;
User Nick = {"Nick", "Watson", 24};