考点16 结构体《C语言程序设计》山东(春季高考)软件与应用技术类 知识点讲解
山东省(软件与应用技术类)春季高考统一招生考试《C语言程序设计》
《C语言程序设计》复习讲义
模块 一 C 语言程序设计
考点 16 结构体
【考纲要求】
(1)了解结构体变量的定义及初始化。
(2)理解结构体变量的引用。
【知识网络】
原创精品资源学科网独家享有版权,侵权必究
学科网(北京)股份有限公司
【知识和技能要点】
一、结构体类型的定义
1. 为何需结构体
凡一事物,其属性往往异类:如学生者,有学号、有名姓、有性别、有分数,或为字符串,或为整型,或为实型。若各立为独立之变量,则散而无统,难见其关联;若强纳于一维数组,则类型不一,亦不可行。故C 语言立构造之型,名曰结构体,使异类之数据合为一体,其各元素谓数据项,亦曰域。
(1)缘由:事物之属性类型不一,散立则无统,数组则难容。
(2)所立:结构体为构造类型,合异类数据为一体。
(3)术语:其中各元素曰数据项,亦曰成员、域。
2. 定义形式
结构体类型之定义,其形为:书 struct,次书结构体名,而以花括弧括其各成员,每成员书“类型 成员名;”一行,末加一分号。如 struct student{ char no[10]; char name[8]; int score; };。此但定义一型,非定变量,故其时未分存储;必待以之定义变量,方有其内存。
(1)形式:struct 结构体名{ 类型 成员名; … };
(2)所成:此定义一类型,未分存储。
(3)与变量之别:必以类型定义变量,方得内存。
3. struct 与分号
定义之中,二处最易致误。一曰 struct 不可省,若径书结构体名而略其关键字,则编译器不识;二曰右花括弧之后之分号不可省,省之则报语法之误,而初学者多忽焉。此二者皆属细微,然编译之报错往往不指其所,故宜先察此处。
(1)struct 不可省:略之则编译器不识其型。
(2)末分号不可省:右花括弧后须加一分号。
(3)报错之惑:错误信息或不直指其处,宜先察此二者。
二、结构体变量的定义与初始化
1. 三种定义方法
原创精品资源学科网独家享有版权,侵权必究
学科网(北京)股份有限公司
结构体变量之定义,其法有三。一为先定义类型,后定义变量,如 struct student stu1, stu2;,此时 struct 不可省。二为类型与变量同时定义,于右花括弧之后、分号之前列变量名。三为直接定义变量,不先立类型名,而径于括弧之后列变量。三者之中,首法最通用;后者宜于该型仅用一次之时。
(1)先型后量:struct student stu1, stu2; 其 struct 不可省。
(2)型量同定:于右花括弧之后列变量名。
(3)直接定义:不立类型名,仅用一次者宜之。
2. 初始化
结构体变量可于定义之时赋以初值,其法与数组略同:以花括弧依成员之序列举其值,如 struct date d={2020, 5, 8};。值之次序须与成员之次序相合,类型亦须相容。若所给之值不足,则余者补零。又全局之结构体变量未显式初始化者,其各成员皆为零或空。
(1)形式:以花括弧依成员之序列其值,如 {2020,5,8}。
(2)次序与类型:须与成员之次序相合,类型相容。
(3)不足补零:所给值少者,余者补零。
3. 内存之分配
结构体变量所占之内存,为各成员所需之总和:如 struct S { int a; int b; }; 则其变量占八字节。各成员各有其存储,彼此不相覆,故可同时并存。类型之定义只立其式,不占地;必待以之定义变量,方分配存储单元。成员愈多则所占愈大,改一成员之类型,其大小亦随之而变。
(1)大小为各成员之总和:如二整型成员,合为八字节。
(2)各占其位:成员各有存储,彼此不相覆,可同时并存。
(3)类型不占地:类型之定义只立其式,定义变量方分配存储。
三、结构体变量的引用
1. 成员引用
结构体变量之引用,以成员为单位,其形为“变量名.成员名”,中点之号曰成员运算符。如 stu.score 者,即取 stu 之 score 成员,其用与普通变量无异,可赋值、可运算、可输入输出。输入之时,若成员为数组,则径书其名而不加取地址符;若为基本类型,则须加 &。
(1)形式:变量名.成员名,中点为成员运算符。
原创精品资源学科网独家享有版权,侵权必究
学科网(北京)股份有限公司