文章目录

  • 1 struct
    • 1.1 定义结构体
    • 1.2 定义结构体 数组与指针
      • 1.2.1 数组
      • 1.2.2 指针
  • 2 typedef
    • 2.1 定义变量
    • 2.2 定义结构体
    • 2.3 定义结构体 数组与指针
      • 2.3.1 数组
      • 2.3.2 指针
  • 3 成员访问小结

1 struct

 struct 结构名{ 类型  变量名; 类型  变量名; ... } 结构变量;

1.1 定义结构体

(1)

struct Node{ int a;
}student;
// 访问
student.a = 10;

(2)

struct Node{...
};
struct Node student;
// 访问
student.a = 10;

(3)

struct { ...
}student;
// 访问
student.a = 10;

注:

  • 只能用结构名(Node)创建实例,不能用 结构变量(student) 创建
    如,struct Node stu1; //允许,但struct student stu1; //不允许
  • (1)和(2)等价,(3)为 无名结构(一般在函数内部)

1.2 定义结构体 数组与指针

1.2.1 数组

(1)

struct Node{ ...
}student[100];
// 访问
student[0].a = 10;

(2)

struct Node{...
};
struct Node student[100];
// 访问
student[0].a = 10;

(3)

struct { ...
}student[100];
// 访问
student[0].a = 10;

1.2.2 指针

struct Node{ int a;
}*student, *students;
// 访问
student = (Node *)malloc(sizeof(Node));
student->a = 10;
(*student).a = 10;
students = (Node *)malloc(sizeof(Node)*100);   //指针数组
students[0]->a = 10;
(*students)[0].a = 10;

(2)

struct Node{...
};
struct Node *student, *students;
// 访问
student = (Node *)malloc(sizeof(Node));
student->a = 10;
(*student).a = 10;
students = (Node *)malloc(sizeof(Node)*100);   //指针数组
students[0]->a = 10;
(*students)[0].a = 10;

2 typedef

2.1 定义变量

typedef int MY_INT;      // 给int起别名:MY_INTint main(){MY_INT a = 100;     //相当于 int a = 100;return 0;
}

2.2 定义结构体

(1)

typedef struct Node{ //Node可省略变为(2)int a;
}Student;               // 给 Node 起别名 Student
//定义
Student stu;    // 第1种
stu.a = 10;
Node stu2;      // 第2种
stu2.a = 10;

(2)

typedef struct{      int a;
}Student;
//定义
Student stu;
stu.a = 10;

(3)

typedef struct Node{         // 由于成员中有struct Node *,因此 Node 不可省略int a;struct Node *deskmate;
}Student;

2.3 定义结构体 数组与指针

2.3.1 数组

typedef struct Node{int a;
}Student, Stus[100];
//定义
Node stus1[100];        // 第1种
stus1[0].a = 10;
Student stus2[100];     // 第2种
stus2[0].a = 10;
Stus stus3;             // 第3种
stus3[0].a = 10;

2.3.2 指针

typedef struct Node{ int a;
}Student, *PStudent;
//定义
Student *pstu1;     // 第1种
pstu1 = (Student *)malloc(sizeof(Student));        //或 pstu1 = (Node *)malloc(sizeof(Node));
pstu1->a = 10;
(*pstu1).a = 10;PStudent pstu2;        // 第2种,PStudent pstu;  等价  Student *stu;
pstu2 = (Student *)malloc(sizeof(Student));        //或 pstu2 = (Node *)malloc(sizeof(Node));
pstu2->a = 10;
(*pstu2).a = 10;

3 成员访问小结

类型 定义变量 访问成员
结构型(定义1个) Student stu; stu.a
结构型(定义n个) Student stu[n]; stu[i].a
指针型(定义1个) Student *stu;
stu = (Student *)malloc(sizeof(Student));
stu->a 或 (*stu).a
指针型(定义n个) Student *stu;
stu = (Student *)malloc(n * sizeof(Student));
stu[i]->a 或 (*stu)[i].a

typedef 与结构体struct相关推荐

  1. C++自学12:结构体(struct/typedef)

    定义结构体需要使用关键字struct修饰 struct MyStruct1 { int a;int c; }; (重要)下面声明了4个东西,分别是 1.结构体User 2.User指针类型的指针p1 ...

  2. C语言中struct typedef 以及结构体指针用法

    struct .typedef以及结构体指针用法 typedef用法 结构体指针用法 结构体初始化   typedef是类型定义的意思.typedef struct 是为了使用这个结构体方便.具体区别 ...

  3. C语言——结构体struct与typedef的使用

    我们常常在某些C语言代码中看到有时候typedef关键字和struct一起连用定义结构体,有时候只用struct关键字直接定义结构体,在此记录两者的一些用法,给自己做一个笔记,希望对大家也有所帮助.如 ...

  4. c/c++中typedef详解(此文对typedef用于结构体的定义说明得很清楚到位)

    1. typedef 最简单使用 [c-sharp] view plain copy typedef long byte_4; // 给已知数据类型long起个新名字,叫byte_4 你可以在任何需要 ...

  5. linux sock结构体,struct socket结构体详解

    在内核中为什么要有struct socket结构体呢? struct socket结构体的作用是什么? 下面这个图,我觉得可以回答以上两个问题.  由这个图可知,内核中的进程可以通过使用struct ...

  6. 获取网络接口信息——ioctl()函数与结构体struct ifreq、 struct ifconf

    http://blog.csdn.net/windeal3203/article/details/39320605 Linux 下 可以使用ioctl()函数 以及 结构体 struct ifreq ...

  7. C++之指针探究(十八):typedef结合结构体指针

    typedef结合结构体指针 例: 运行结果: 附上例代码 //小问学编程 #include <stdio.h>//我们一次定义了2个类型 //第一个是结构体类型,有2个名字:struct ...

  8. 【结构体Struct——简单使用】

    文章目录 结构体 定义结构体 访问结构体成员 结构体指针 结构体作为函数参数 结构体数组 总结 结构体 在C++中,struct是一种自定义的数据类型,用于将不同类型的变量组合在一起,形成一个逻辑上的 ...

  9. C语言结构体struct详解与实例

    目录 1.定义 2.应用 2.1初始化 2.2使用 3.结构体对齐规则与存储 1.定义 C语言中结构体(struct关键字定义)是一种自定义数据类型.通过结构体的定义可以将多种不同类型数据形成一个组合 ...

  10. C语言中结构体struct的用法

    点击蓝字 关注我们 定义结构体变量 下面举一个例子来说明怎样定义结构体变量. struct string { char name[8]; int age; char sex[2]; char depa ...

最新文章

  1. Android View体系(一)视图坐标系
  2. SecureCRT 或者 超级终端 始终无法ping通主机
  3. 构建SpringBoot第一个Demo
  4. android相册管理,Piktures - 最优雅的相册管理 - Android 应用 - 【最美应用】
  5. 故障error: failed to run Kubelet: failed to create kubelet: misconfiguration: kubelet cgroup driver: “
  6. 能利用计算机来模拟某种真实的实验现象,自然现象或社会现象的课件是,幼儿园课件制作教案...
  7. 波兰表达式(前序表达式)的计算(栈)
  8. 罗永浩抖音直播首秀:3小时1.1亿;微软曝三屏折叠机专利;Linux Mint 20仅提供64位版本 | 极客头条...
  9. C#判断检测网络是否连接
  10. Learning Efficient Single-stage Pedestrian Detectors by Asymptotic Localization Fitting行人检测ECCV2018
  11. mac1200r 服务器无响应,水星路由器mac1200r桥接不成功怎么办
  12. 技能 |【点滴知识】如何在跟催任务时使用EXCEL进度条?
  13. 艰难的抉择,阿里“小前台、大中台”的解读
  14. HttpClient 调用耗时长服务问题记录和处理方案
  15. 卷帘相机原理和卷帘门补偿(其中循环的理解)
  16. Think Pad笔记本分区解决思路及方法
  17. Springboot整合RocketMQ遇到的问题
  18. eclipse新建C/C++项目
  19. V90 PN 伺服驱动器的一键自动优化功能_方法示例
  20. source和./的区别

热门文章

  1. Simple-RTMP-Server 服务器搭建
  2. 深入理解java的异常处理机制
  3. hdu Hike on a Graph
  4. iBooks 一样的翻书效果
  5. 10、斐波那契数列,跳台阶问题(Python)
  6. 【狂神说Redis】3五大数据类型
  7. 谈一下UI框架经常看到Vue的.sync修饰符
  8. lepus监控mysql慢查询_天兔(Lepus 3.8)收集MySQL慢查询
  9. 什么是PM2 ---- (零秒重启)
  10. java arryalist去重复_java ArrayList去重复值