结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构。
在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。
结构体定义
结构体的定义如下所示,struct为结构体关键字,tag为结构体的标志,member-list为结构体成员列表,其必须列出其所有成员;variable-list为此结构体声明的变量。
struct tag {
member-list
} variable-list ;
在一般情况下,tag、member-list、variable-list这3部分至少要出现2个。以下为示例:
//此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c
//同时又声明了结构体变量s1
//这个结构体并没有标明其标签
struct {
int a;
char b;
double c;
} s1;
//同上声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c
//结构体的标签被命名为SIMPLE,没有声明变量
struct SIMPLE{
int a;
char b;
double c;
};
//用SIMPLE标签的结构体,另外声明了变量t1、t2、t3
struct SIMPLE t1, t2[20], *t3;
//也可以用typedef创建新类型
typedef struct{
int a;
char b;
double c;
} Simple2;
//现在可以用Simple2作为类型声明新的结构体变量
Simple2 u1, u2[20], *u3;
在上面的声明中,第一个和第二声明被编译器当作两个完全不同的类型,即使他们的成员列表是一样的,如果令t3=&s1,则是非法的。
定义结构变量的方法
1、先定义结构,再说明结构变量。
例如:
struct stu
{
int num;
char name[20];
int age;
};
struct stu boy1,boy2;
说明了两个变量boy1和boy2为stu结构类型。
也可以用宏定义使一个符号常量来表示一个结构类型, 例如:
#define STU struct stu
STU
{
int num;
char name[20];
int age;
};
STU boy1,boy2;
2、在定义结构类型的同时说明结构变量。
例如:
struct stu
{
int num;
char name[20];
int age;
}boy1,boy2;
3、直接说明结构变量。
例如:
struct
{
int num;
char name[20];
int age;
}boy1,boy2;
第三种方法与第二种方法的区别在于第三种方法中省去了结构名,而直接给出结构变量。
说明了boy1,boy2变量为stu类型后,即可向这两个变量中的各个成员赋值。
在上述stu结构定义中,所有的成员都是基本数据类型或数组类型。成员也可以又是一个结构, 即构成了嵌套的结构。
使用结构变量成员的一般形式是:
结构变量名。成员名
例如:
boy1.num
/*即第一个人的学号 */
如果成员本身又是一个结构则必须逐级找到最低级的成员才能使用。
例如:boy1.birthday.month
即第一个人出生的月份成员可以在程序中单独使用,与普通变量完全相同。
技术专区
- mybatis动态sql详解
- 用VHDL语言设计数据传输系统中的HDB3编码器
- 裸机程序如何驱动硬件?看前辈是怎么说的
- 应用面向对象编程SoC原则的典型示例
- 嵌入式开发之java常用开发工具介绍