C学习笔记——(9) 复合类型(结构体、共用体、枚举、typedef)的介绍及使用

这篇博客详细介绍了C语言中的复合类型,包括结构体的定义、初始化、成员使用、结构体数组、结构体嵌套、结构体与指针的关系以及作为函数参数的使用。同时,还讲解了共用体(联合体)的概念,枚举的定义和用途,以及typedef关键字的作用和使用示例。
摘要由CSDN通过智能技术生成

1、结构体

1.1 概述

数组:描述一组具有相同类型数据的有序集合,用于处理大量相同类型的数据运算。

有时我们需要将不同类型的数据组合成一个有机的整体,如:一个学生有学号/姓名/性别/年龄/地址等属性。显然单独定义以上变量比较繁琐,数据不便于管理。

C语言中给出了另一种构造数据类型——结构体。

在这里插入图片描述

1.2 结构体变量的定义和初始化

定义结构体变量的方式:

  •  先声明结构体类型再定义变量名
  •  在声明类型的同时定义变量
  •  直接定义结构体类型变量(无类型名)

在这里插入图片描述
结构体类型和结构体变量关系:

  •  结构体类型:指定了一个结构体类型,它相当于一个模型,但其中并无具体数据,系统对之也不分配实际内存单元。(理解成面向对象中定义的)
  •  结构体变量:系统根据结构体类型(内部成员状况)为之分配空间。(理解成实例化的对象

例子:

//结构体类型的定义
struct stu
{
   
	char name[50];
	int age;
};

//先定义类型,再定义变量(常用)
struct stu s1 = {
    "mike", 18 };


//定义类型同时定义变量
struct stu2
{
   
	char name[50];
	int age;
}s2 = {
    "lily", 22 };

struct
{
   
	char name[50];
	int age;
}s3 = {
    "yuri", 25 };

1.3 结构体成员的使用

直接看例子:

#include<stdio.h>
#include<string.h>

//结构体类型的定义
struct stu
{
   
	char name[50];
	int age;
};

int main()
{
   
	struct stu s1;

	//如果是普通变量,通过点运算符操作结构体成员
	strcpy(s1.name, "abc");
	s1.age = 18;
	printf("s1.name = %s, s1.age = %d\n", s1.name, s1.age);

	//如果是指针变量,通过->操作结构体成员
	strcpy((&s1)->name, "test");
	(&s1)->age = 22;
	printf("(&s1)->name = %s, (&s1)->age = %d\n", (&s1)->name, (&s1)->age);

	return 0;
}

1.4 结构体数组

#include <stdio.h>

//统计学生成绩
struct stu
{
   
	int num;
	char name[20];
	char sex;
	float score;
};

int main()
{
   
	//定义一个含有5个元素的结构体数组并将其初始化
	struct stu boy[5] = {
   
		{
    101, "Li ping", 'M', 45 },
		{
    102, "Zhang ping", 'M', 62.5 },
		{
    103, "He fang", 'F', 92.5 },
		{
    104, "Cheng ling", 'F', 87 },
		{
    105, "Wang ming", 'M', 58 } };

	int i = 0;
	int c = 0;
	float ave, s = 0;
	for (i = 0; i < 5; i++)
	{
   
		s += boy[i].score;	//计算总分
		if (boy[i].
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值