首先我们来捋一捋结构体变量那些事儿
结构体变量
学习一个新的语法 我们要弄明白的是:这个语法的作用,这种语法的初始化,这种语法的引用,这种语法的补充用法,这个语法与其他语法的结合,这个语法在实际题目中的应用。
1.自定义结构体的作用:
结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合
简单来说结构体就是定义了一个整体,里面可以包含各种数据类型。
具体如下:
struct 结构体名
{
类型 成员名1;
类型 成员名2;
…
类型 成员名n;
};
2.结构体的定义
结构体的定义有三种方式,列举如下:
第一种就是先声明后定义:
1
2
3
4
5
6
7struct student { char name; int grade; char sex; }; struct student s1;
第二种就是声明的时候同时定义 :
1
2
3
4
5
6struct student { char name; int number; char sex; }s1;
第三种就是声明的时候定义且 无结构体名 :
1
2
3
4
5
6struct { char name; int number; char sex; } s1;
注意:第二种第三种都是大括号之后直接加s1然后加上分号的。
这里一定要注意 结构体有一个名字叫结构体类型名,然后定义的时候还要给结构体定义一个名字这个叫做结构体变量名。
3.结构体的初始化
静态初始化
1
2
3
4
5
6
7
8struct student { int number; char name; char sex; };struct student s1={21,"周明",'m'};
动态初始化
此处涉及到结构体变量的引用:结构体变量名.成员
1
2
3
4
5
6
7
8
9struct student { int number; char name; char sex; }s1; scanf ("%d %c %c",& s1.number,&s1.name,&s1.sex);
4.结构体的引用 :结构体变量名.成员
结构体的引用不能是整体
比如说:scanf(" %d%d",&s1.number1,&s1.number 2) 这样就是准确的。
但是 :scanf(" %d",&s1) 或者是 scanf("%d%d",&s1) 或者直接写 s1={32,43}没有定义 这些都是错误的
输出也是一样的:不可以使用整体。
5.结构体的补充用法
(1)赋值
以下是将S1的值赋给S2
1
2
3
4
5
6struct { int num; int lenf; }s1={22,32},s2; s2=s1;
(2)结构体的嵌入
比如:我们要表示一个学生的所有信息,其中的生日信息又包括了年月日,就有了以下的程序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21#include <stdio.h> struct kid { int year; int month; int days; }; struct student { char name[10]; int age; struct kid s1; }s2={"狗狗",1,{1998,12,20}}; int main() { printf("%st%dt%d-%d-%d",s2.name,s2.age,s2.s1.year,s2.s1.month,s2.s1.days); return 0; }
其中我们有几个点需要注意:
【1】. 字符数组与字符串
((1))比如说给字符数组储存一个“China”,它是这样存放的 :
C | h | i | n | a |
所以 我们输入的“狗狗”需要定义一个数组存放, 并且在C语言中中文字符占有两个字节,英文字符占有一个字符,因此数组可存放的字节应该大于4。
((2))因为char 是字符型变量,是一个字节。所以我们要输入或者输出4个字节的“狗狗”,我们应该用%s来输入或者输出这个字符串,而不是%c。
【2】t 是指往后挪动一个tab.
(3)sizeof 函数
sizeof函数是一种计算位数的函数,它的使用方式有sizeof(数据)例如:【sizeof(int)】,sizeof(数据类型)例如:【sizeof(s1.name)】;
结构体和数组的综合应用:结构体数组
1. 结构体数组的数组的意义
表示相似的N个整体,运用数组存储这N个整体。
2.定义和初始化
方法跟普通的结构体其实是一样的,只是在定义结构体变量的时候变为struct student s[10];
静态初始化可以表示为:
动态初始化就参考下面这个程序吧。
题目如下:
假设要从3个候选人Li、Zhang、Fun中选一班长,今有10个人参加投票。从键盘输入这10张选票上的人名,统 计并输出投票结果。
最后
以上就是动人羽毛最近收集整理的关于C 语言 建立数据结构 结构体变量与数组的结合 持续更的全部内容,更多相关C内容请搜索靠谱客的其他文章。
发表评论 取消回复