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

结构体

c语言中,数组是一组相同类型数据的集合,而结构体可以完成对不同数据的封装,可以是不同数据类型的集合。

简单来说,结构体就是不同类型数据或者相同类型数据的集合。

使用结构体例子:

1. 衣服信息:衣服尺寸,颜色,修长,衣长........

2. 苹果的信息:颜色,大小,是否合格...

不同结构体定义形式以及使用

对于所有形式的结构体定义,都要遵循两个最基本的原则:

1. 定义结构体之后一定要以分号结束

2. 结构体中不能定义函数

形式一:

//最基本形式
struct Student{int number;    //学号int age;bool gender;    //性别,1女,0男
};//单独定义结构体变量
struct Student stu1,stu2={2,3,1};

定义说明:

1. struct是数据类型说明符,指出下面定义的是结构体类型

2. Student是该结构体名称

3. number,age,gender是结构体Student包含的信息,可是相同类型,也可是不同类型

使用说明:

对于该种结构体定义,在声明结构体变量时,一定要是struct Student,不能只能使用Student

形式二:

//在定义结构体变量的同时就进行变量声明
struct Student{int age;int number;bool gender;
}stu1,stu2={1,2,0};

形式三:

//不定义结构体名称,在定义结构体时直接声明结构体变量
struct {int number;int age;bool gender;
}stu1,stu2;

说明:该种方法并没有定义结构体名称,不能再在后续代码中声明该结构体变量,因此只能存在stu1,stu2两个结构体变量

形式四:

typedef struct{int number;int age;
}Stu;int main(){Stu stu1={1,2};printf("学号是%d\n",stu1.number);printf("年龄是%d\n",stu1.age);
} 

说明:

这里也没有定义结构体名称,但是通过使用typedef关键字对该未命名的结构体设置别名,因此可以使用该别名进行结构体变量声明

形式五:

//使用typedef加上struct定义结构体
typedef struct Student{int number;int age;bool gender;
}Stu;//声明结构体变量
Stu stu1,stu2;

说明:

1. typedef 用来为复杂的声明定义简单的别名,即具有数据类型重命名的作用,这里将struct Student,即结构体Student定义  一个Stu别名,后续可以使用Stu代替struct Student进行变量声明

2. 如果没有typedef关键字,后续声明变量必须使用struct Student进行声明。

另外,结构体定义中也可以进行结构体嵌套定义。

结构体变量中各个数据的使用

结构体变量.结构体中的数据项名称

struct Student stu={1,2,0};
printf("%d/n",stu.number);

可供参考的博文:

结构体(struct)_编程芝士的博客-CSDN博客_struct

(18条消息) C语言——结构体(全)_小小圆脸的博客-CSDN博客_结构体c语言

(18条消息) C 结构体 struct 详解_zhanghow的博客-CSDN博客_c结构体
(18条消息) C语言之玩转结构体1——结构体定义与声明_静晨66的博客-CSDN博客_c语言 结构体声明

如有错误之处,希望大家指正。

C语言——结构体struct与typedef的使用相关推荐

  1. c语言结构体定义蚂蚁,C语言结构体(struct)常见使用方法

    C语言结构体(struct)常见使用方法 C语言结构体(struct)常见使用方法 基本定义:结构体,通俗讲就像是打包封装,把一些有共同特征(比如同属于某一类事物的属性,往往是某种业务相关属性的聚合) ...

  2. C语言 结构体Struct 中冒号的用法

    C语言 结构体Struct 中冒号的用法 本文有部分内容参考菜鸟教程-C 位域 . 关于"位域"的说明 有些信息在存储时,并不需要占用一个完整的字节,而只需占几个或一个二进制位. ...

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

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

  4. 关于C语言结构体(struct)介绍

    转自:微点阅读  https://www.weidianyuedu.com 导读:       C语言结构体,怎么理解? 你可以把它想象成一个桌面上的文件夹,这个文件夹里面可以有各种各样的文件,当然也 ...

  5. C语言 结构体 struct Cat cat1;

    引入 使用传统技术解决 需要定义多个变量或数组 结构体与结构体变量的关系示意图 类似Java类中的对象(结构体)与属性(结构体变量) 一切物体都可以看作对象(结构体) 补充:C语言数据类型 简单使用案 ...

  6. C语言怎么存储结构体,C语言结构体Struct怎么使用?

    在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据.结构体的定义形式为:struct结构体名{结构体所包含的变量或数组};结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相 ...

  7. C语言 结构体struct总结

    文章目录 一.前言 二.结构体的引入 三.结构体声明 四.结构体变量的定义 五.结构体变量的初始化 六.结构体变量成员的访问 七.结构体存储原理 八.结构体数组 8.1结构体数组的定义 8.2结构体数 ...

  8. c语言结构体struct所占字节数求解

    原本觉的c语言学的还不错,今天看了一下c语言的有关书籍,看到求结构体大小的例子,心想这不是很简单吗,不就是把所有成员的大小加起来就行了,其实远没我想的简单,看来c语言还要继续学习哈哈. 先看一个实例 ...

  9. c语言结构体语法分析,C语言结构体struct的语法解析

    本节内容需要结合视频讲解才能更容易理解,视频播放地址如下: 用java开发编译器 本节,我们着重研究结构体定义,也就是struct 这种变量定义,C语言编译器是如何解析的,本节我们要解析的结构体定义如 ...

最新文章

  1. vmware+android+4.3,Vmware虚拟机安装安卓4.0系统教程
  2. Java编程思想(第4版)读书笔记——01
  3. python人工智能——深度学习——TensorFlow基本介绍
  4. Plugin [id: ‘com.github.kt3k.coveralls‘, version: ‘2.8.2‘] was not found in any of the following sou
  5. ARCGIS破解教程(arcgis10.2(含ARCGIS下载地址)
  6. 图像测试环境软件,Digimizer(图像测量分析软件)
  7. 数据库工具DBeaver
  8. 最新苹果CMS对接千月版本-畅视影视(V9.3开源)已搭建测试版
  9. RS485接口保护电路
  10. 手把手刷数据结构-1.手把手刷链表算法
  11. oracle的执行图标不见了,开始菜单oracle集成管理工具的图标没了怎么办
  12. 【软件定义汽车】AUTOSAR架构介绍
  13. 【CVPR 2021】Unsupervised Pre-training for Person Re-identification(UPT)
  14. 闲鱼互动玩法标准化建设
  15. 【UE4】UE4框选
  16. 老鱼Python数据分析——篇十五:“选股宝”使用API下载JSON格式数据
  17. Centos修改时间为24小时制
  18. org.hibernate.MappingException:unknown entity:com.lmy.model.User
  19. php执行who命令,Linux中的who命令实例介绍
  20. 迪士尼机器人芭蕾舞_迪士尼“跳跳虎”机器人来了!

热门文章

  1. iOS小技能:截获分析网络数据包( tcpdump 、Wireshark的原理和基本使用 、使用Charles联调测试)
  2. ONNX Runtime使用简单介绍
  3. itext word模板替换_【极简Python 自动化办公】Python写入Word文档
  4. 10年内,这三大领域将被人工智能和大数据重塑!
  5. java变量无修饰符默认类型,Java变量与修饰符
  6. window bat脚本 扩充变量 %dp0
  7. emulator: ERROR: x86 emulation currently requires hardware acceleration 启动模拟器异常
  8. NC:你觉得你吃的是草,其实你还是吃的土
  9. 如何在MyEclipse中反编译class文件
  10. 仿生巨头 Festo 为机械臂安上 AI ,习得技能立即同步所有机械臂...