定义结构体类型的同时定义变量,并对变量初始化

合集下载

C语言第11章结构体

C语言第11章结构体

29
【例】30张选票,对三名侯选人之一投票选举,输 入得票人名字,按名字计数,输出最后选举结果。 #include "stdio.h" #define N 30 struct person { char name[20]; int count; };
Li
0 Zhang 0 Wang 0
led[0].name
第十一章 结构体与பைடு நூலகம்用体
本章目标
1.理解结构体,共用体的数据类型
2.学会定义结构体、共用体的数据类型 的变量 3.能够正确使用结构体、共用体的成员
§11.1
已了解的数据类型:
引言
整型 浮点型 字符型 数组
简单数据类型
用户定义的数据类型
特点:所有的元素都是同一种类型
指针型 存在的问题:难以处理较复杂的数据
18
圆点运算符
引用形式:结构体变量名 . 成员名 其中:成员运算符’ . ‟ : 一级,自左而右;
stu1.num 引用结构体变量stu1的num成员; 引用stu1的name成员(字符指针); [i] 引用name成员的第i个元素; stu1.birthday.y 只能对最低级成员进行引用;
二、定义完结构体后,定义结构变量并初始化 struct student x2={0002, "Li Ming ", 85.5};
16
§11.4 访问结构成员
访问结构变量实质上是引用其成员 有两种运算符可访问结构成员
17
struct date { int m; int d; iny y; }; struct student { long num; char name[20]; char sex; struct date birthday; float score; char tel[15]; } stu1, stu2;

C语言数据结构-第9章 结构体共用体与枚举

C语言数据结构-第9章 结构体共用体与枚举
"Guang Zhou","13901000002"}, {"Gu YuPing",18,"F","2019010003",2019,5,5,"Han",
"Shang Hai","13901000003"}}; int i; for(i=0;i<3;i++) { printf("%s,%d,%s,%s,",stud[i].name,stud[i].age,stud[i].sex,stud[i].xh); printf("%d,%d,%d,",stud[i].birthday.year,stud[i].birthday.month, stud[i].birthday.day); printf("%s,%s,%s\n",stud[i].nation,stud[i].address,stud[i].tel); } }
成员运算符“.”的优先级最高,在表达式中的结构体变量成员不 需要加括号。例如:
wang.age++;
相当于
(wang.age)++;
注意
13
结构体变量的成员名可以相同,但必须处在不同的层次。 例如:
sturct student { int no;
char name[20]; struct { int no; char classname[20]; }class; struct { int no; char groupname[20]; }group; }wang;
定义结构体类型名的同时定义结构体数组,例如:
struct student{…} stud[50];

C语言 第八章.用户自定义数据类型

C语言   第八章.用户自定义数据类型
printf("%c,%c\n",u2.c[0],u2.c[1]); }
u2占2个字节
例:以下程序输出结果是?
union example { struct { int x,y; e.b e.a e.in.x }in; e.in int a; e.in.y int b; }e; void main() { e.a=1;e.b=2; e.in.x=e.a*e.b; e.in.y=e.a+e.b; printf("%d,%d",e.in.x,e.in.y); }
内存低地址 01100001 00001010
字符变量c占1个字节
整型变量i占2个字节 单精度实型变量f占4个字节
u1.i=10;
例:以下程序输出结果是?
union u_type { char c[2]; u1
p
内存高地址 内存低地址 ‘a’ ‘b’ c1 c2 c[1] c[0] u1占2个字节 内存高地址 内存低地址 ‘A’ ‘B’ ‘a’ ‘b’ c1 c2 c[1] c[0]
{"0208103322","lisi",19,'M'},{"0208103323","lili",20,'F'}, {"0208103324","xulin",21,'M'}};
学号(number) 姓名(name) 年龄(age) 性别(sex)
stu[0] stu[1] stu[2] stu[3]
char name[8];
int age; char sex;
定义结构体类 sizeof(stu) 型的同时创建 =? 结构体数组

C程序设计第九章结构体与共用体

C程序设计第九章结构体与共用体

则p为结构指针变量,它可用来存放student型变 量的地址 x1 p name 令 p=&x1; sex age 则 p为x1的首地址. score addr 访问结构成员: pname 表示x1的姓名; pname 等价于 (*p).name
page
表示x1的年令; page
等价于 (*p).age
a structure is a collection of variables that are referenced under one name, providing a convenient means of keeping related information together. called aggregate data types because they consist of several different, yet logically connected, variables. also referred to as compound or conglomerate data types, for the same reason. user-defined types
9.5 结构体数组
结构体数组的定义
三种形式:
形式一: struct student 形式二: { int num; struct student 形式三: char name[20]; { int num; struct char sex; char name[20]; { int num; int sex; charage; }; char name[20]; int age; char sex; struct student stu[2]; }stu[2]; int age; }stu[2];

C++中结构体的类型定义和初始化以及变量引用

C++中结构体的类型定义和初始化以及变量引用

C++中结构体的类型定义和初始化以及变量引⽤C++结构体类型的定义和初始化有时需要将不同类型的数据组合成⼀个有机的整体,以供⽤户⽅便地使⽤。

这些组合在⼀个整体中的数据是互相联系的。

例如,⼀个学⽣的学号、姓名、性别、年龄、成绩、家庭地址等项,都是这个学⽣的属性,见图可以看到学号(num)、姓名(name)、性别(sex)、年龄(age)、成绩(score )、地址(addr)是与姓名为“Li Fun”的学⽣有关的。

如果在程序中将num,name,sex,age,score,addr分别定义为互相独⽴的变量,就难以反映出它们之间的内在联系。

应当把它们组织成⼀个组合项,在⼀个组合项中包含若⼲个类型不同(当然也可以相同)的数据项。

C和C++允许⽤户⾃⼰指定这样⼀种数据类型,它称为结构体。

它相当于其他⾼级语⾔中的记录(record)。

例如,可以通过下⾯的声明来建⽴如图所⽰的数据类型。

struct Student//声明⼀个结构体类型Student{int num; //包括⼀个整型变量numchar name[20]; //包括⼀个字符数组name,可以容纳20个字符char sex; //包括⼀个字符变量sexint age; //包括⼀个整型变量agefloat score; //包括⼀个单精度型变量char addr[30]; //包括⼀个字符数组addr,可以容纳30个字符}; //最后有⼀个分号这样,程序设计者就声明了⼀个新的结构体类型Student(struct是声明结构体类型时所必须使⽤的关键字,不能省略),它向编译系统声明:这是⼀种结构体类型,它包括num, name, sex, age, score, addr等不同类型的数据项。

应当说明Student是⼀个类型名,它和系统提供的标准类型(如int、char、float、double ⼀样,都可以⽤来定义变量,只不过结构体类型需要事先由⽤户⾃⼰声明⽽已。

复习4--C结构体

复习4--C结构体

};
定义一个学生的结构体
• 例如定义一个学生的结构体: struct student { int number; char name[15]; char sex; int age; }
• 成员又称为成员变量,是结构体中若干个数据类型, 每个成员须标明数据类型。
结构体类型的嵌套
• 结构体成员可以 是任意的数据类 型,还可以是其 它的结构体类型, 这时称为结构体 类型的嵌套。
struct date {
int year; int month; int day; }; struct person { int number; char name[20]; char sex; struct date birthday; };
结构体变量的定义
• 在定义了结构体之后,结构体变量可以用三种方式定义。 • 方式1: 先声明结构体类型,再定义变量名,分别定义。
共同体与结构体的不同
• 结构体变量所占内存是各成员占的内存长度之和。 • 而共同体变量所占内存长度是其中最长的成员的长度。 • 同一段内存段虽然可以存放几种不同类型的成员,但不
能同时存放,起作用的成员是最后一次存放的成员,在 存入一个新的成员后,原有的成员就被冲掉。 • 各成员的地址都是同一地址。
2)结构体类型与结构体数组同时定义
struct stu { long num; char name[10]; char sex; int age; }students[20]
3)直接定义结构体数组 而不用定义结构体类型名
struct { long num; char name[10]; char sex; int age; }students[20]
• 定义结构体变量students ,然后让这个指针p指向这个变 量,例如: struct stu students ; p=&students;

C语言 选择题库第10章 结构体与共用体

C语言 选择题库第10章 结构体与共用体

第10章结构体与共用体1.以下叙述中错误的是()。

A) 可以通过typedef增加新的类型B) 可以用typedef将已存在的类型用一个新的名字来代表C) 用typedef定义新的类型名后,原有类型名仍有效D) 用typedef可以为各种类型起别名,但不能为变量起别名参考答案:A【解析】关键字typedef的作用只是将C语言中的已有的数据类型作了置换,并不是增加新的类型,所以A)错误。

2.以下关于typedef的叙述错误的是A) 用typedef可以增加新类型B) typedef只是将已存在的类型用一个新的名字来代表C) 用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名D) 用typedef为类型说明一个新名,通常可以增加程序的可读性参考答案:A【解析】typedef并不是增加了新类型,而是用一个新名字替代已存在的类型,不能为变量说明一个新名,使用typedef可以增强移植性。

所以A选项错误。

3.若有以下语句typedef struct S{ int g; char h; } T;以下叙述中正确的是A) 可用S定义结构体变量B) 可用T定义结构体变量C) S是struct 类型的变量D) T是struct S类型的变量参考答案:B【解析】本题考查typedef重新声明一种结构体类型,那么T为结构体类型,而不是结构体变量,所以B选项正确。

4.设有以下语句typedef struct TT{ char c; int a[4]; } CIN;则下面叙述中正确的是A) CIN是struct TT类型的变量B) TT是struct类型的变量C) 可以用TT定义结构体变量D) 可以用CIN定义结构体变量参考答案:D【解析】本题考查typedef重新声明一种结构体类型,其中CIN为结构体类型名,而不是结构体变量,所以D 选项正确。

5.以下叙述中错误的是A) 可以用typedef将已存在的类型用一个新的名字来代表B) 可以通过typedef增加新的类型C) 用typedef定义新的类型名后,原有类型名仍有效D) 用typedef可以为各种类型起别名,但不能为变量起别名参考答案:B【解析】本题考查typedef的用法,typedef并不是增加一种新的类型,而是对已存在的类型用一个新的名字来代表,所以B选项错误。

C程序设计判断题

C程序设计判断题

C程序设计判断题(下列各题,你认为正确的,请在题后“J”,错的打“X”)1.C语言是一种计算机高级语言。

J2.C语言是一种语算机低组语言。

X3.C语言允许直接访问物理地址,能进行位操作。

J4.C语言不允许直接访问物理地址,不能进行位操作。

X5.C语言是结构化程序设计语言。

J6.C语言是面向对象的程序设计语言。

X7.C程序要通过编译,连接才能得到可执行的目标程序。

J8.用C语言编写程序,可以编写出任何类型的程序。

J9.每一个C程序都必须有一个主函数main()°J10.每一个C程序允许有多个主函数。

X11.C语言允许有空函数。

J12.C语言不允许定义使用空函数。

X13.C程序书写格式,允许一行内可以写几个语句。

J14.C程序书写格式规定一行内只能写一条语句。

X15.C程序的语句无行号。

J16.C程序的每一条语句都给定一个行号。

X17.C语言的每个语句的最后必须有一个分号。

J18.C语言有的语句的最后可以没有分号。

X19.C语言本身没有输入输出语句。

J20.C语言提供了专用的输入输出语句。

X21.C语言可用来编写应用软件,也可用来编写系软件。

J22.C语可用业编写应用软件,但不能用来编写系统软件。

X23.Turbo C是在微机上广泛使用的编译程序。

J24.Turbo C是在大型计算机上使用的编译程序。

X25.C语言的数据结构是以数据类型形式出现的。

J26.C语言的数据结构是以常量和变量形式出现的。

X27.空类型是C语言的一种数据类型。

J28.空类型不是C语言的数据类型。

X29.C语言中数据有常量和变量之分。

J30.C语言中数据不分常量和变量。

X31.利用指针和结构体类型可以构成表、树等复杂的数据结构。

J32.利用批针和结构类型不能构成更复杂的数据结构。

X33.在C程序中对所用到的所有数据都必须指定其数据类型。

J34.在程序运行过程中,其值不能被改变的量称为常量。

J35.在程序运行过程中,其值可以改变的量称为变量。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档