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"
};

上面这种是不对的;


上一篇下一篇

猜你喜欢

热点阅读