c/c++结构体复习
2020-10-15 本文已影响0人
Hello_kid
typedef struct objc_class *Class
typedef struct objc_object *id
以上可知,在OC中,对象底层的表示是一个struct
这篇文章带你复习下c/c++的struct。
先上维基百科的一段解释
在C语言中,结构体(struct)指的是一种数据结构,是C语言中复合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。
参考链接
总结来说 结构体是由一些基础数据类型构成一个复合类型;
结构体声明方式
// 第一种
struct Stu {
char name[16];
int age;
} xh,dy;
struct Stu liming;
可以在声明结构体的同时去声明一个或者多个结构体变量 xh,dy
;
也可以单独使用去声明 如struct Stu liming;
⚠️注意 struct Stu
是一个整体,是一个类型, 用来声明结构体变量;
// 第二种 匿名结构体
struct {
char name[16];
int age;
} noName;
如果这个结构体变量只需要声明一次, 可以写成匿名结构体
// 第三种 typedef 重新创建一个类型
typedef struct {
char *name;
int age;
} Person;
Person p1, p2;
struct Stu {
char name[16];
int age;
} xh,dy;
typedef struct Stu Student;
使用typedef 重新命名类型, 方便实用;
结构体赋值方式
先简单定义个结构体
typedef struct {
char name[16];
int age;
} Person;
第一种
Person p = {"liming", 25};
初始化的时候同时赋值,⚠️ 注意顺序
第二种
Person p;
p.age = 23;
p.name = "liming";
因为分开赋值, 顺序不顺序无所谓
第三种
Person p = {
.age = 23,
.name = "liming"
};
这种赋值方式更像前俩种的结合体,⚠️这种方式不能先声明 再赋值, 只能一次性一条语句完成
❌错误示范
Person p;
p = {
.age = 23,
.name = "liming"
};
上面这种是不对的;