栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言基础9---复合结构

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言基础9---复合结构

学习网站:C语言网.
编译器:Red Panda Dev-C++



1.struct结构体的定义和使用
// 1.数组的成员是同一类型的;结构体的成员可以是不同类型的;


// 2.使用该结构体必须说明结构类型的变量
// 结构变量说明语法:struct 结构类型名称 结构变量名;
// 3.结构变量的成员在内存中占用连续的存储区域,所占内存大小为结构中每个成员的长度之和;
// 4.访问结构中成员的方法:结构变量名.成员名称,如:student1.tel;
// 5.结构初始化一般形式:struct 结构类型名 结构变量={初始化数据1,...,初始化数据n};
#include 
#include 

// 结构体定义;
struct _INFO{
	int num;
	char str[256];
};
int main(void){
	struct _INFO A;		// 使用结构体,结构变量A;
	A.num = 2022;		// A.num,为成员初始化;
	strcpy(A.str, "Welcome to FUXI Technology");
	printf("This year is %d %sn", A.num, A.str);
	
	return 0;
}
2.结构体数组的使用
// 1.结构体数组是一个数组,数组的每个元素都是结构体类型;
// 2.实际应用:用结构体数组表示具有相同数据结构的一个群体,如:一个班的学生档案,一个车间员工的工资表;
// 3.实例说明:
#include 

// 定义结构体 
struct address{
	char name[30];
	char street[40];
	unsigned long tel;
	unsigned long zip;
};

// 初始化结构体变量 
struct address students[3]={
		{"Willard","Road NO.1",6722000,525200},
		{"ChenJD","Road NO.2",6722001,525201},
		{"LinWY","Road NO.3",6722002,525202} 
	};

int main(void){
	printf("姓名tt街道tt电话tt邮编n");
	for(int i = 0;i < 3;i++){
		printf("%stt%st%lutt%lun",students[i].name,students[i].street,students[i].tel,students[i].zip);
	}
	return 0;
}
3.结构体指针
// 1.结构体指针:指向结构体的指针;
// 2.当一个指针用来指向一个结构体变量时,称为结构体指针变量;
// 3.结构体指针变量中的值是所指向的结构变量的首地址,通过结构指针访问该结构变量;
// 4.结构体指针变量定义一般形式:struct 结构类型名 *结构指针变量名
// 5.结构体指针通过箭头(->)访问成员;
#include 

struct address{
	char name[30];
	char street[40];
	unsigned long tel;
	unsigned long zip;
};

int main(void){
	struct address students[3]={
		{"Willard","Road NO.1",6722000,525213},
		{"ChenJD","Road NO.2",6722001,525214},
		{"LinWY","Road NO.3",6722002,525252}
	};
	
	struct address *p;
	p=&students[0];
	
	printf("姓名tt街道tt电话tt邮编n");
	for(int i = 0;i < 3;i++){
		printf("%stt%st%lutt%lun",p->name,p->street,p->tel,p->zip);
		p++;
	}
	return 0;
}
4.union共用体定义和使用
// 1.C语言中,允许几种不同类型的变量存放到同一段内存单元中,几个变量相互覆盖;
// 2.几个不同的变量共同占用一段内存的结构,被称为共用体类型结构;
// 3.定义形式:

// 4.不能直接引用共用体变量,只能引用共用体变量中的成员;
// 5.共用体变量成员引用方法:共用体变量名.成员名
// 6.同一内存段,可以用来存放几种不同类型的成员,但每一瞬间只能存放其中的一种,而不是同时存放几种;即:每一瞬间只有一个成员起作用,其他成员不起作用;
// 7.共用体变量中起作用的成员是最后一次存放的成员,在存入一个新成员后,原有成员就失去作用;
// 8.共用体变量的地址和它各成员地址都是同一地址;
// 9.不能对共用体变量名赋值,不能企图引用变量名来得到一个值,不能在定义共用体变量时对它进行初始化;
// 10.不能把共用体变量作为函数参数,不能是函数返回共用体变量,但可以使用指向共用体变量的指针;
// 11.共用体类型可以出现在结构体类型的定义中,可以定义共用体数组;
// 12.结构体可以出现在共用体类型的定义中,数组可以作为共用体的成员;
#include 

union INFO{
	int numA;
	int numB;
	int numC;
	int numD;
};

int main(void){
	union INFO A;
	A.numA = 584;
	A.numB = 520;
	A.numC = 13;
	A.numD = 14;
	
	// 结果输出均为14; 
	printf("numA = %dn", A.numA);
	printf("numB = %dn", A.numB);
	printf("numC = %dn", A.numC);
	printf("numD = %dn", A.numD);
	
	return 0;
}
5.typedef用法
// 1.使用类型说明语句typedef定义新的类型来代替已有类型;
// 2.typedef语法形式:typedef 已定义的类型 新的类型;

// 3.typedef常用:给结构体变量重命名;
#include 
#include 

// INFO类型等价于struct _INFO类型 
typedef struct _INFO{
	int numberOne;
	char str[256];
}INFO;

int main(){
	struct _INFO A;
	INFO B;		// 等价于struct _INFO B;
	
	A.numberOne =  2022;
	strcpy(A.str,"Welcome to FUXI Technology.");
	B = A;
	
	// 打印的内容一模一样;
	printf("This year is %d %sn",A.numberOne, A.str);
	printf("This year is %d %sn",B.numberOne, B.str);
	
	return 0;
}
6.enum枚举类型
// 1.枚举类型语法:
// enum 枚举名 {枚举元素1,枚举元素2,...};
#include 
int main(void){
	// 定义一个enum week类型,共7个值; 
	enum Week{MON = 1, TUE, WED, THU, FRI, SAT, SUN};
	
	// 定义枚举变量;
	enum Week A = TUE;
	enum Week B = SUN;
	
	printf("TUE = %dn", A);		// 打印2; 
	printf("SUN = %dn", B);
	return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/862304.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号