龙空技术网

C语言 结构体用法详解

前端全栈开发 509

前言:

而今朋友们对“结构体c语言程序”大概比较关怀,朋友们都需要了解一些“结构体c语言程序”的相关资讯。那么小编同时在网摘上搜集了一些对于“结构体c语言程序””的相关内容,希望咱们能喜欢,姐妹们快快来学习一下吧!

在C语言中,可以使用结构图struct来存放一组不同类型的数据。结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个变量(或数组)都称为结构体的成员。

结构体定义

student为结构体名

student包含5个成员:name,num,age,group,score

结构体成员变量的定义方式和变量(或数组)的定义方式相同

结构体定义时,结构体成员变量不能初始化

结构体定义大括号后面必须加分号

结构体也是一种数据类型,它是由程序员自己定义,可以包含多个其他类型的数据。像int,float,char等由C语言本身提供的数据类型,不能再进行拆分,我们称之为基本数据类型。而结构体可以包含多个基本类型的数据,也可以包含其他的结构体,我们称它为复杂数据类型或构造数据类型。

既然结构体是一种数据类型,那么它就可以用来定义变量。定义变量时struct关键字不能少。比如:struct student stu1,stu2,stu3;结构体就像一个“模板”,定义出来的变量都具有相同的性质。

也可以在定义结构体的同时定义结构体变量,将变量放在结构体定义的最后即可,同样分号必不可少。

定义结构体并定义结构体变量

如果不需要定义新的结构体变量,上面的代码还可以这样写:省略结构体名

省略结构体名

结构体和数组类似,都是一组数据的集合,整体使用没有太大意义。数组使用下标获取单个元素,结构体使用点号.获取单个成员。结构体成员可以逐一赋值,也可以整体赋值。但是整体赋值仅限于定义结构体变量的时候,在使用过程中只能对成员变量逐一赋值。这个和数组赋值非常类似。

整体赋值

重点说说

问:为什么在定义结构体的时候,不可以对结构体成员进行初始化?

答:结构体是一种自定义的数据类型,是创建变量的模板,不占用内存空间,所以不可以对其成员进行初始化操作。结构体变量才包含实实在在的数据。需要内存空间来存储。

内存对齐

理论上结构体所占用的存储空间是各个成员变量所占的存储空间之和。按照C语言内存对齐,提高寻址效率原则。结构体所占用的存储空间,必须是所有成员中占用存储空间最大的成员的倍数。

标签: #结构体c语言程序 #结构体c语言怎么用

上一篇Go 的位操作

下一篇C语言结构体