typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。

具体区别在于: 
若struct node{ }这样来定义结构体的话。在定义 node 的结构体变量时,需要这样写:struct node n; 
若用typedef,可以这样写:typedef struct node{}NODE; 。在申请变量时就可以这样写:NODE n;就是自定义了一种数据类型。比如整型,用的时候是int age=10;int是数据类型,age是整型变量。同样typedef就是一种可以自定义类型的关键字,这样你就可以自定义类型了。

1、结构体

1)、结构体变量的定义可以放在结构体的声明之后:

struct Student{         //声明结构体char name[20];      //姓名int num;            //学号float score;        //成绩
};
struct Student stu1;    //定义结构体变量

2)、结构体变量的定义也可以与结构体的声明同时,这样就简化了代码:

struct Student{        char name[20];       int num;             float score;
}stu1;                  //在定义之后跟变量名

3)、还可以使用匿名结构体来定义结构体变量:

struct {                //没有结构名char name[20];       int num;            float score;
}stu1;  

但要注意的是这样的方式虽然简单,但不能再次定义新的结构体变量了。

访问结构成员

虽然结构类似一个数组,只是数组元素的数据类型是相同的,而结构中元素的数据类型是可以不同的。但结构不能像数组那样使用下标去访问其中的各个元素,而应该用结构成员运算符点(.)。即访问成员的一般形式是:
结构变量名 . 成员名
如 stu1 . name 表示学生stu1的姓名。

但如果结构体中的成员又是一个结构体,如:

struct Birthday{                //声明结构体 Birthdayint year;int month;int day;
};
struct Student{                 //声明结构体 Studentchar name[20];              int num;                    float score;                 struct Birthday birthday;   //生日
}stu1;

则用 stu1.birthday.year 访问出生的年份。
举例

#include <stdio.h>//定义结构体并声明变量
struct people
{int age;int id;
}a;int main()
{a.age = 20;printf("%d\n", a.age);}

2、typedef修饰的结构体

typedef修饰的结构体,表示自定义了一种数据类型

#include <stdio.h>struct people
{int age;int id;
}a;//a代表什么?typedef struct cat
{int age;int id;
}b;int main()
{a.age = 20;printf("%d\n", a.age);//cat结构体被typedef修饰,表示已经把cat结构体定义为一种类型,这样就可以这样定义一个cat类型的变量b b1,b tom,b robinb tom;tom.age=100;printf("%d\n", tom.age);return 0;
}

结构体定义 typedef struct 用法详解和用法小结相关推荐

  1. 【C语言】结构体定义 typedef struct 用法详解和用法小结

    结构体定义 typedef struct 用法详解和用法小结 文章目录 结构体定义 typedef struct 用法详解和用法小结 0. 前言 1. 首先:在C中定义一个结构体类型要用typedef ...

  2. c语言用typedef定义结构体,C语言结构体定义 typedef struct

    c语言规范,定义结构体: typedef struct ANSWER_HEADER { u8 u8Type; u8 u8Code; u32 u32TimeStamp; struct ANSWER_HE ...

  3. c语言结构体定义和使用typedef,结构体定义typedef struct 用法详解

    typedef是类型定义的意思,typedef struct是为了使用这个结构体方便. 在了解typedef之前我们先来了解一下什么是结构体类型: C++提供了许多种基本的数据类型(如int.floa ...

  4. 结构体,联合体,枚举详解

    结构体,联合体,枚举详解 目录 结构体 联合体 枚举常量 1.结构体 在C语言中,系统已经提供了一些数据类型,比如float,int,double,char等,但是我们有时会需要更复杂的类型来描述一个 ...

  5. MSG结构体和WndProc窗口过程详解

    MSG结构体和WndProc窗口过程对于Windows编程非常重要,如果不了解它们,可以说就没有学会Windows编程. MSG结构体 MSG 结构体用来表示一条消息,各个字段的含义如下: typed ...

  6. 利用结构体数组实现重排序(详解)

    一:要求 输入乱序的 成绩单 包括 姓名和成绩,成绩按照递增顺序 输出,如果遇见成绩相同的 按名字的字典序输出. 示例: 输入 5 w 12 a 12 v 7 c 3 e 9 输出: c 3 v 7 ...

  7. python lxml用法详解_Python-- lxml用法

    目录 lxml库(lxml安装可查看上一篇文章) Element类 1.节点操作 2.属性操作 3.文本操作 4.文件解析与输出 5.ElementPath 6.案例(尤其最后的一篇代码) lxml库 ...

  8. Linux who命令用法详解命令用法详解

    Linux who命令 Linux who命令用于显示系统中有哪些使用者正在上面,显示的资料包含了使用者 ID.使用的终端机.从哪边连上来的.上线时间.呆滞时间.CPU 使用量.动作等等. 使用权限: ...

  9. C++结构体定义(链表等)

    文章目录 定义 解释 声明 定义变量 在声明类型的同时定义变量 直接定义结构体类型变量(不常用) 结构体内定义函数(重要) 结构体变量的初始化 在结构体内定义初始化函数(重要) 在定义变量时进行初始化 ...

最新文章

  1. mybatis 思维导图,让 mybatis 不再难懂(二)
  2. Ubuntu下mysql字符集设置
  3. 德勤:95%的受访公司将在2019年投资区块链
  4. Linux rpm 命令参数使用详解[介绍和应用]
  5. OpenGL 点光源阴影Point Shadows
  6. Django-RESTframework序列器
  7. mybatis学习(49):嵌套查询--一对多
  8. Comet OJ - 2019 六一欢乐赛
  9. MySQL之索引优化
  10. Windows 环境安装 RabbitMQ
  11. windows linux内核版本,微软决定在Windows10中发布一个完整的Linux内核
  12. Java数据类型分类
  13. 一般什么时候加骨窗_高三成绩大幅度提高一般出现在什么时候?老师道出了实情...
  14. 算法 | golang 实现 key有序map
  15. 用Scipy中的linprog解决股票融资中的线性规划问题
  16. PR菜鸟入门 -- PR基础教学
  17. fatal error: zlib.h: No such file or directory
  18. RocketMQ消息生产者是如何选择Broker的
  19. CRMEB Pro v1.2快速打包 APP步骤详解
  20. 超越 GPT-3,DeepMind 推出新宠 Gato,却被质疑“换汤不换药”?

热门文章

  1. MySQL-HAVING的用法
  2. MYSQL数据库导入错误提示:/*!40101 SET NAMES utf8mb4 */;解决办法!
  3. 电脑提示缺少文件d3dx10.dll怎么办?
  4. requests手动添加cookies
  5. jsp ssh礼品在线销售系统
  6. 树莓派4b系统搭建——从零开始
  7. 你知道吗?常用的数据挖掘分析工具Mahout和MLlib
  8. 【前端 H5】模仿网易云音乐 CSS 加js 实现留声机效果 H5
  9. Ubuntu 12.04 LTS 中文输入法的安装
  10. 六年级下册计算机电子板报教案,《第1课制作电子小报教案》小学信息技术浙摄影社课标版六年级下册教案28605.docx...