11.29

结构体

可以放多种类型的类型

声明一个结构体类型:

  1. #inxlude<stdio.h>
  2. struct mimngzi{
  3. char name[10]; //结构体成员
  4. int age; //全局变量,放在函数内部只有局部可用
  5. double high;
  6. char xuehao[]; //同一类型可多次出现
  7. }; //有分号
  8. int main(){
  9. return 0;
  10. }

声明结构体变量:

  1. struct {
  2. char name[10];
  3. int age;
  4. double high;
  5. char xuehao[];
  6. }mingzi1,mingzi2; //声明类型时,顺便声名变量,此时这种类型可以不声明名字
  1. struct mingzi mingzi3mingzi4; //用类型名声明变量

struct mingzi相当于一种类型

初始化:

未初始化的默认为0

初始化指定元素 struct stu stu={.age=27}

  1. struct mingzi mingzi3={"mingzi",18,158,"2021005842"};
  2. struct {
  3. char name[10];
  4. int age;
  5. double high;
  6. char xuehao[];
  7. }mingzi1={"mingzi",18,158,"2021005842"};

访问成员

实例变量

有空间就是实例

  1. struct mingzi mingzi3={"mingzi",18,158,"2021005842"};
  2. mingzi.age //结构体变量名.要取得
  3. printf("%d,%s,%lf\n",mingzi.age,mingzi.name,mingzi.high);

指针变量

  1. struct stu *p=&mingzi;
  2. printf("%d,%s,%lf\n",p->age,p->name,(&stu)-> high);
  3. struct stu *p=(struct stu *)malloc(sizeof(struct stu));
  4. p->age=18;
  5. (*p).high=158;
  6. strcpy(p->name,"huhu"); //不能直接改

->优先级大于&

赋值

字符型的一定要通过strcpy

复合文字结构:stu=(strcut stu){"小华",12,"123456"}

类似初始化C99标准