在C语言中,结构是一种用户自定义的数据类型,它允许您将多个不同类型的数据组合成一个单一的数据类型,如
struct student {
int num;//学号
char name[10];//姓名
int computer, english, math;//3门课程成绩
double average;//个人平均成绩
};//一定一定要记得加;
包含多种数据类型,可看出结构是C语言中一种新的构造数据类型,它能把有内在联系的不同数据类型汇聚成一个整体,使他们相互关联;同时,结构又是一个变量的集合,可以对其成员单独操作(同基本数据类型操作).
struct? 结构名{//结构类型名
? ? ? ? 类型名 结构成员名1;
? ? ? ? 类型名 结构成员名2;//结构分量
? ? ? ? ? ? ? ? ? ? ? ? ...
? ? ? ? 类型名 结构成员名n;
};//看做一条语句,结束要加;
struct为关键字,后自行命名一个结构名(合法标识符)
一个大的实体包含多个成员,每个成员又可能包含更小的成员,这样就需要结构的嵌套
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
先定义一个结构类型,在定义这种类型的变量
struct Student {
char name[50];
int age;
float score;
};
struct Student s1, s2;
定义结构类型的同时定义结构变量
struct Student {
char name[50];
int age;
float score;
} s1, s2;
利用结构成员操作符"."来引用结构成员
结构变量名.结构成员名,如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; //给这个嵌套结构命名为outer
outer.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;
}
如果两个结构变量具有相同的类型,则允许将一个结构变量的值直接赋给另一个.赋值时一一对应.