结构体定义 typedef struct 用法详解和用法小结
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 用法详解和用法小结相关推荐
- 【C语言】结构体定义 typedef struct 用法详解和用法小结
结构体定义 typedef struct 用法详解和用法小结 文章目录 结构体定义 typedef struct 用法详解和用法小结 0. 前言 1. 首先:在C中定义一个结构体类型要用typedef ...
- c语言用typedef定义结构体,C语言结构体定义 typedef struct
c语言规范,定义结构体: typedef struct ANSWER_HEADER { u8 u8Type; u8 u8Code; u32 u32TimeStamp; struct ANSWER_HE ...
- c语言结构体定义和使用typedef,结构体定义typedef struct 用法详解
typedef是类型定义的意思,typedef struct是为了使用这个结构体方便. 在了解typedef之前我们先来了解一下什么是结构体类型: C++提供了许多种基本的数据类型(如int.floa ...
- 结构体,联合体,枚举详解
结构体,联合体,枚举详解 目录 结构体 联合体 枚举常量 1.结构体 在C语言中,系统已经提供了一些数据类型,比如float,int,double,char等,但是我们有时会需要更复杂的类型来描述一个 ...
- MSG结构体和WndProc窗口过程详解
MSG结构体和WndProc窗口过程对于Windows编程非常重要,如果不了解它们,可以说就没有学会Windows编程. MSG结构体 MSG 结构体用来表示一条消息,各个字段的含义如下: typed ...
- 利用结构体数组实现重排序(详解)
一:要求 输入乱序的 成绩单 包括 姓名和成绩,成绩按照递增顺序 输出,如果遇见成绩相同的 按名字的字典序输出. 示例: 输入 5 w 12 a 12 v 7 c 3 e 9 输出: c 3 v 7 ...
- python lxml用法详解_Python-- lxml用法
目录 lxml库(lxml安装可查看上一篇文章) Element类 1.节点操作 2.属性操作 3.文本操作 4.文件解析与输出 5.ElementPath 6.案例(尤其最后的一篇代码) lxml库 ...
- Linux who命令用法详解命令用法详解
Linux who命令 Linux who命令用于显示系统中有哪些使用者正在上面,显示的资料包含了使用者 ID.使用的终端机.从哪边连上来的.上线时间.呆滞时间.CPU 使用量.动作等等. 使用权限: ...
- C++结构体定义(链表等)
文章目录 定义 解释 声明 定义变量 在声明类型的同时定义变量 直接定义结构体类型变量(不常用) 结构体内定义函数(重要) 结构体变量的初始化 在结构体内定义初始化函数(重要) 在定义变量时进行初始化 ...
最新文章
- mybatis 思维导图,让 mybatis 不再难懂(二)
- Ubuntu下mysql字符集设置
- 德勤:95%的受访公司将在2019年投资区块链
- Linux rpm 命令参数使用详解[介绍和应用]
- OpenGL 点光源阴影Point Shadows
- Django-RESTframework序列器
- mybatis学习(49):嵌套查询--一对多
- Comet OJ - 2019 六一欢乐赛
- MySQL之索引优化
- Windows 环境安装 RabbitMQ
- windows linux内核版本,微软决定在Windows10中发布一个完整的Linux内核
- Java数据类型分类
- 一般什么时候加骨窗_高三成绩大幅度提高一般出现在什么时候?老师道出了实情...
- 算法 | golang 实现 key有序map
- 用Scipy中的linprog解决股票融资中的线性规划问题
- PR菜鸟入门 -- PR基础教学
- fatal error: zlib.h: No such file or directory
- RocketMQ消息生产者是如何选择Broker的
- CRMEB Pro v1.2快速打包 APP步骤详解
- 超越 GPT-3,DeepMind 推出新宠 Gato,却被质疑“换汤不换药”?
热门文章
- MySQL-HAVING的用法
- MYSQL数据库导入错误提示:/*!40101 SET NAMES utf8mb4 */;解决办法!
- 电脑提示缺少文件d3dx10.dll怎么办?
- requests手动添加cookies
- jsp ssh礼品在线销售系统
- 树莓派4b系统搭建——从零开始
- 你知道吗?常用的数据挖掘分析工具Mahout和MLlib
- 【前端 H5】模仿网易云音乐 CSS 加js 实现留声机效果 H5
- Ubuntu 12.04 LTS 中文输入法的安装
- 六年级下册计算机电子板报教案,《第1课制作电子小报教案》小学信息技术浙摄影社课标版六年级下册教案28605.docx...