C讲课笔记:结构体
【摘要】
文章目录
一、结构体(一)结构体概述(二)结构体定义(三)结构体变量的声明(四)结构体成员的引用
二、案例演示(一)定义与使用结构体1、编写程序 - 定义与使用结构体.c2、运行程序,查看结果...
一、结构体
(一)结构体概述
“结构体类型”是由不同数据类型变量组成的集合体,相当于其它高级语言中的记录。结构体类型的数据由若干称为“成员”的数据组成,每个成员既可以是一个基本数据类型的数据,也可以是另一个构造类型的数据。
(二)结构体定义
struct 类型名 {
类型1 成员名1;
类型2 成员名2;
……
};
- 1
- 2
- 3
- 4
- 5
以上整个部分是一个数据类型,与整型的int是同样地位。可用typedef把结构体类型替换成一个只有几个字母的简短标识符。
(三)结构体变量的声明
结构体变量是用说明的结构体类型所定义的一个变量,与结构体类型不是一回事。一个结构体变量所占字节数为其所有成员所占字节数之和。如struct Student {char name[10]; int age;} a, b; 则表明定义了两个结构体变量a,b,每个变量占14个字节。a,b与int i, j; 中的变量i,j是同样地位。
(四)结构体成员的引用
引用成员可用以下3种方式:(1)结构体变量名.成员名;(2)指针变量名->成员名:(3)(*指针变量名).成员名。点(.)称为成员运算符,箭头(->)称为结构指向运算符。
二、案例演示
(一)定义与使用结构体
1、编写程序 - 定义与使用结构体.c
/*
功能:定义和使用结构体
作者:华卫
日期:2013年12月3日
*/
#include <stdio.h>
#include <string.h>
//定义结构体
struct Student
{
int num;
char name[20];
char sex[4];
int age;
double score;
char address[30];
};
void main() {
struct Student stu1, stu2, stu3; // 声明结构体变量
//给第一个学生赋值
stu1.num = 1;
strcpy(stu1.name, "李平");
strcpy(stu1.sex, "男");
stu1.age = 18;
stu1.score = 98.5;
strcpy(stu1.address, "泸州江阳区瓦窑坝35#");
//给第二个学生赋值
stu2.num = 2;
strcpy(stu2.name, "王红");
strcpy(stu2.sex, "女");
stu2.age = 19;
stu2.score = 99.5;
strcpy(stu2.address, "泸州龙马潭区潇湘路15#");
//给第三个学生赋值
stu3.num = 3;
strcpy(stu3.name, "张枫");
strcpy(stu3.sex, "男");
stu3.age = 21;
stu3.score = 69.0;
strcpy(stu3.address, "泸州龙马潭区潇湘路15#");
//输出三个学生的信息
printf("学号\t姓名\t性别\t年龄\t成绩\t家庭住址\n");
printf("%d\t%s\t%s\t%d\t%.2f\t%s\n", stu1.num, stu1.name, stu1.sex, stu1.age, stu1.score, stu1.address);
printf("%d\t%s\t%s\t%d\t%.2f\t%s\n", stu2.num, stu2.name, stu2.sex, stu2.age, stu2.score, stu2.address);
printf("%d\t%s\t%s\t%d\t%.2f\t%s\n", stu3.num, stu3.name, stu3.sex, stu3.age, stu3.score, stu3.address);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
2、运行程序,查看结果
3、课堂练习:利用结构体数组来完成上述任务。
(二)使用指针指向结构体
1、编写程序 - 使用指针指向结构体.c
/*
功能:使用指针指向结构体
作者:华卫
日期:2013年12月3日
*/
#include <stdio.h>
#include <string.h>
//定义结构体
struct Student
{
int num;
char name[20];
char sex[4];
int age;
double score;
char address[30];
};
void main() {
struct Student stu1, stu2, stu3; // 声明结构体变量
struct Student *s1, *s2, *s3; // 声明结构体指针
s1 = &stu1;
s2 = &stu2;
s3 = &stu3;
//给第一个学生赋值
s1->num = 1;
strcpy(s1->name, "李平");
strcpy(s1->sex, "男");
s1->age = 18;
s1->score = 98.5;
strcpy(s1->address, "泸州江阳区瓦窑坝35#");
//给第二个学生赋值
s2->num = 2;
strcpy(s2->name, "王红");
strcpy(s2->sex, "女");
s2->age = 19;
s2->score = 99.5;
strcpy(s2->address, "泸州龙马潭区潇湘路15#");
//给第三个学生赋值
s3->num = 3;
strcpy(s3->name, "张枫");
strcpy(s3->sex, "男");
s3->age = 21;
s3->score = 69.0;
strcpy(s3->address, "泸州龙马潭区潇湘路15#");
//输出三个学生的信息
printf("学号\t姓名\t性别\t年龄\t成绩\t家庭住址\n");
printf("%d\t%s\t%s\t%d\t%.2f\t%s\n", s1->num, s1->name, s1->sex, s1->age, s1->score, s1->address);
printf("%d\t%s\t%s\t%d\t%.2f\t%s\n", s2->num, s2->name, s2->sex, s2->age, s2->score, s2->address);
printf("%d\t%s\t%s\t%d\t%.2f\t%s\n", s3->num, s3->name, s3->sex, s3->age, s3->score, s3->address);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
2、运行程序,查看结果
- 输出三个学生信息,代码还可以这样写:
printf("学号\t姓名\t性别\t年龄\t成绩\t家庭住址\n");
printf("%d\t%s\t%s\t%d\t%.2f\t%s\n", (*s1).num, (*s1).name, (*s1).sex, (*s1).age, (*s1).score, (*s1).address);
printf("%d\t%s\t%s\t%d\t%.2f\t%s\n", (*s2).num, (*s2).name, (*s2).sex, (*s2).age, (*s2).score, (*s2).address);
printf("%d\t%s\t%s\t%d\t%.2f\t%s\n", (*s3).num, (*s3).name, (*s3).sex, (*s3).age, (*s3).score, (*s3).address);
- 1
- 2
- 3
- 4
文章来源: howard2005.blog.csdn.net,作者:howard2005,版权归原作者所有,如需转载,请联系作者。
原文链接:howard2005.blog.csdn.net/article/details/112599033
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)