C语言结构体学习还是很简单的,有些人对结构体的学习很迷茫,那就是因为你没有掌握方法来学,今天分享一下学习C语言结构体的方法,一起来看:
【1】定义
【2】结构体类型变量的定义方法
【3】结构体普通变量的使用形式
【4】结构体大小
【5】结构体指针
【6】结构体数组
【7】结构体数组的使用
【1】定义
不同类型的数据是互相联系组成了一个有机的整体。此时,就要用到一种新的构造类型数据——结构体(structure),简称结构。
定义一个结构体类型的一般形式为:
struct 结构体名
{
数据类型
数据类型
成员名1;
成员名2;
:
数据类型
成员名n;
};
在大括号中的内容也称为“成员列表”或“域表”,其中每个成员名的命名规则与变量名相同;数据类型可以是基本变量类型和数组类型,或者是一个结构体类型。用分号“;”作为结束符。整个结构的定义也用分号作为结束符
说明:结构体类型中的成员名可以与程序中的变量名相同,二者并不代表同一对象,编译程序可以自动对它们进行区分。
最后,总结一下结构体类型的特点:
(1)结构体类型是用户自行构造的。
(2)它由若干不同的基本数据类型的数据构成。
(3)它属于C语言的一种数据类型,与整型、实型相当。
//定义它时不分配空间,只有用它定义变量时才分配空间。//注意:结构体需要在程序的最上面定义//注意:定义一个结构体时,没有开辟空间
【2】结构体类型变量的定义方法
这是C语言中定义结构体类型变量最常见的方式
struct 结构体名
(1)先定义结构体类型再定义变量 {
名 成员列表;
};
struct 结构体名变量名;
struct 结构体名
(2)在定义类型的同时定义变量 {
成员列表;
}变量名;
struct//没有结构体名
(3)直接定义结构类型变量 {
成员列表
}变量名;
struct stu//有名结构体
{
int id;
char name[N];
struct//一般在结构体内部再定义一个结构体,则需
要使用无名结构体
(4)嵌套定义结构体变量{
int year;
int mon;
int day;
}birthday; birthday为stu内部成员的变量的名字
int score;
char sex;
};
【3】结构体普通变量的使用形式
使用结构体变量访问结构体成员
结构体变量的成员用以下一般形式表示:
结构体变量名.成员名
【4】结构体大小
一个结构体变量占用内存的实际大小,也可以利用sizeof求出。它的运算表达式
为:
sizeof(运算量)
注意: 4 字节对齐,
若某一变量所占字节为4字节或是4字节的倍数的情况下(int、float、double、long),它之前的变量所占空间若不为4的倍数(char、short),则需将其补齐为4的倍数
例如:char ch;
int i; // 则ch同样占据4字节
char ch2;
short s;
long l; // ch2 与 s 共同占据4字节,l 占据 4 字节
【5】结构体指针
//结构体指针变量访问成员,通常使用x->或者(*x)
【6】结构体数组
具有相同结构体类型的结构体变量也可以组成数组,称它们为结构体数组。
结构体数组的定义形式如下:
struct 结构体名
(1)先定义结构体类型,再用它定义结构体数{
组。成员表列;
};
struct 结构体名数组名[元素个数]
(2)在定义结构体类型同时定义结构体数组。结构体数组的定义形式如下:
struct 结构体名
{
成员表列;
}数组名[元素个数];
结构体数组的定义形式如下:
struct//没有结构体名
(3)直接定义结构体数组{
成员表列;
}数组名[元素个数];
【7】结构体数组的使用
(1)引用某一元素中的成员。
(2)可以将一个结构体数组元素值赋给同一结构体类型的数组中的另一个元素,
或赋给同一类型的变量。
//结构体数组本质上是一个数组,所以不能通过数组名进行赋值
struct stu t[3];
//t = s;
//数组元素相当于变量,所以可以使用结构体数组元素进行赋值 t[0] = s[0];
t[1] = s[1];
t[2] = s[2];
(3)不能把结构体数组元素作为一个整体直接进行输入输出。