一.结构的定义
1.概念
在C语言中,结构是一种用户自定义的数据类型,它允许您将多个不同类型的数据组合成一个单一的数据类型,如
struct student {int num;//学号char name[10];//姓名int computer, english, math;//3门课程成绩double average;//个人平均成绩
};//一定一定要记得加;
包含多种数据类型,可看出结构是C语言中一种新的构造数据类型,它能把有内在联系的不同数据类型汇聚成一个整体,使他们相互关联;同时,结构又是一个变量的集合,可以对其成员单独操作(同基本数据类型操作).
2.定义
struct 结构名{//结构类型名
类型名 结构成员名1;
类型名 结构成员名2;//结构分量
...
类型名 结构成员名n;
};//看做一条语句,结束要加;
struct为关键字,后自行命名一个结构名(合法标识符)
3.结构的嵌套定义
一个大的实体包含多个成员,每个成员又可能包含更小的成员,这样就需要结构的嵌套
struct address {//定义地址结构char city[10];char street[20];int code;int zip;
};
struct student {int num;char name[10];struct address addr;//定义通信地址成员int computer, english, math;double average;
};
结构类型 struct student的成员变量addr被定义成结构类型struct address,而struct address又包含了4个成员,即一个结构的成员被定义成了另一个结构类型.
二.结构变量的定义和初始化
同基本数据类型一样,需要定义结构类型的变量才能使用.
如:struct student stu,max;定义了结构变量 stu,max;数据类型都为struct student
1.定义
(1)单独定义
先定义一个结构类型,在定义这种类型的变量
struct Student { char name[50]; int age; float score;
}; struct Student s1, s2;
(2)混过定义
定义结构类型的同时定义结构变量
struct Student { char name[50]; int age; float score;
} s1, s2;
2.结构变量的使用
利用结构成员操作符"."来引用结构成员
结构变量名.结构成员名,如stu.num stu.name
在C语言中,对结构成员的使用方法与同类型的变量完全相同
如:stu.num=100;strcpy(stu.name,"zhang");
对嵌套结构成员的引用方法和一般成员的引用方法类似
#include <stdio.h> struct Inner { int inner_data;
}; struct OuterStruct { int outer_data; struct Inner inner; // 定义嵌套结构成员 并给被嵌套的结构命名为 inner
}; int main() { struct OuterStruct outer; //给这个嵌套结构命名为outerouter.outer_data = 10; //对结构outer中的outer_data用.操作outer.inner.inner_data = 20; //对结构outer中的结构inner操作,故用两次.printf("outer_data: %d\n", outer.outer_data); printf("inner_data: %d\n", outer.inner.inner_data); return 0;
}
3.结构变量的整体赋值
如果两个结构变量具有相同的类型,则允许将一个结构变量的值直接赋给另一个.赋值时一一对应.