结构体基础知识点(一)--建立自己的数据类型

本文详细介绍了在C语言中如何定义结构体类型变量,包括三种常见的方式:先声明后定义、声明同时定义以及直接定义结构体变量。此外,还讲解了结构体变量的初始化与引用方法,并通过实例演示了如何使用结构体存储和处理复杂数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义结构体类型变量

1. 先声明结构体,再定义该类型的变量(常用)

声明结构体:

struct Student
{
	int num;         // 学号为整型
	char name[20];   // 姓名为字符串
	char sex;        // 性别为字符型
	int age;         // 年龄为整型
	float score;     // 成绩为实型
	char addr[30];   // 地址为字符串
};                   // 注意最后有一个分号

定义类型的变量:

Struct Student    student1, student2;
  结构体类型名       结构体变量名

2.在声明类型的同时定义变量

struct Student
{
	int num;         // 学号为整型
	char name[20];   // 姓名为字符串
	char sex;        // 性别为字符型
	int age;         // 年龄为整型
	float score;     // 成绩为实型
	char addr[30];   // 地址为字符串
}student1,student2;  

3.不指定类型名而直接定义结构体类型变量

struct
{
	int num;         // 学号为整型
	char name[20];   // 姓名为字符串
	char sex;        // 性别为字符型
	int age;         // 年龄为整型
	float score;     // 成绩为实型
	char addr[30];   // 地址为字符串
}student1,student2;  

结构体变量的初始化和引用

栗子1:

把一个学生的信息(包括学号、姓名、性别、住址)放在一个结构体变量中,然后输出这个学生的信息

# include<stdio.h>
int main()
{
struct Student 
{
	long int num;
	char name[20];
	char sex;
	char addr[20];
} a={10101, "Li Lin",'M',"123 Beijing Road"};

printf("NO.:%ld\nname:%s\nsex:%c\naddress:%s\n",a.num,a.name,a.sex,a.addr);
return 0;

}

在这里插入图片描述
对某一成员初始化

struct Student  b={.name="zhang Fang"};   //在成员名前有成员运算符"."

  ".name"隐含代表结构体变量b中的成员 b.name。 其他未被指定初始化的数值型成员被系统初始化为0,字符型成员被系统初始化为'\0',指针型成员被系统初始化为 NULL

引用结构体变量中成员的值

结构体变量.成员名

student1.num=10010;

栗子2:

输入两个学生的学号、姓名,成绩,输出成绩较高的学生的学号、姓名,成绩

# include<stdio.h>
int main()
{
struct student 
{
	int num;
	char name[20];
	float score;
}student1,student2;

scanf("%d%s%f",&student1.num,student1.name,&student1.score);
scanf("%d%s%f",&student2.num,student2.name,&student2.score);

printf("The high score is:\n");
if(student1.score>student2.score)
	printf("%d %s %6.2f\n", student1.num,student1.name,student1.score);

else if(student1.score<student2.score)
	printf("%d %s %6.2f\n", student2.num,student2.name,student2.score);

else
{
	printf("%d %s %6.2f\n", student1.num,student1.name,student1.score);	
	printf("%d %s %6.2f\n", student2.num,student2.name,student2.score);
}
return 0 ;

}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值