第9章_用户自己建立数据类型

合集下载

《C语言》章节列表

《C语言》章节列表

第1章程序设计和C语言1第2章算法——程序的灵魂16第3章最简单的C程序设计——顺序程序设计第4章选择结构程序设计85第5章循环结构程序设计114第6章利用数组处理批量数据1426.1怎样定义和引用一维数组1426.1.1怎样定义一维数组1436.1.2怎样引用一维数组元素1446.1.3一维数组的初始化1456.1.4一维数组程序举例1466.2怎样定义和引用二维数组1486.2.1怎样定义二维数组1496.2.2怎样引用二维数组的元素1506.2.3二维数组的初始化1516.2.4二维数组程序举例1526.3字符数组1546.3.1怎样定义字符数组1546.3.2字符数组的初始化1556.3.3怎样引用字符数组中的元素1556.3.4字符串和字符串结束标志1566.3.5字符数组的输入输出1596.3.6使用字符串处理函数1616.3.7字符数组应用举例165习题168第7章用函数实现模块化程序设计1707.1为什么要用函数1707.2怎样定义函数1727.2.1为什么要定义函数1727.2.2定义函数的方法1737.3调用函数1747.3.1函数调用的形式1747.3.2函数调用时的数据传递1757.3.3函数调用的过程1777.3.4函数的返回值1787.4对被调用函数的声明和函数原型1797.5函数的嵌套调用1827.6函数的递归调用1847.7数组作为函数参数1927.7.1数组元素作函数实参1937.7.2数组名作函数参数1947.7.3多维数组名作函数参数1977.8局部变量和全局变量1997.8.1局部变量1997.8.2全局变量2007.9变量的存储方式和生存期2047.9.1动态存储方式与静态存储方式2047.9.2局部变量的存储类别2057.9.3全局变量的存储类别2087.9.4存储类别小结2127.10关于变量的声明和定义2147.11内部函数和外部函数2157.11.1内部函数2157.11.2外部函数215习题218第8章善于利用指针2208.1指针是什么2208.2指针变量2228.2.1使用指针变量的例子2228.2.2怎样定义指针变量2238.2.3怎样引用指针变量2248.2.4指针变量作为函数参数2268.3通过指针引用数组2308.3.1数组元素的指针2308.3.2在引用数组元素时指针的运算2318.3.3通过指针引用数组元素2338.3.4用数组名作函数参数2378.3.5通过指针引用多维数组2458.4通过指针引用字符串2558.4.1字符串的引用方式 2558.4.2字符指针作函数参数2598.4.3使用字符指针变量和字符数组的比较263 8.5指向函数的指针2668.5.1什么是函数指针2668.5.2用函数指针变量调用函数2668.5.3怎样定义和使用指向函数的指针变量268 8.5.4用指向函数的指针作函数参数2708.6返回指针值的函数2748.7指针数组和多重指针2778.7.1什么是指针数组 2778.7.2指向指针数据的指针2808.7.3指针数组作main函数的形参2828.8动态内存分配与指向它的指针变量2858.8.1什么是内存的动态分配2858.8.2怎样建立内存的动态分配2858.8.3void指针类型 2878.9有关指针的小结288习题291第9章用户自己建立数据类型2939.1定义和使用结构体变量2939.1.1自己建立结构体类型2939.1.2定义结构体类型变量 2959.1.3结构体变量的初始化和引用2979.2使用结构体数组3009.2.1定义结构体数组3009.2.2结构体数组的应用举例3019.3结构体指针3039.3.1指向结构体变量的指针3039.3.2指向结构体数组的指针3049.3.3用结构体变量和结构体变量的指针作函数参数306 9.4用指针处理链表3099.4.1什么是链表 3099.4.2建立简单的静态链表3109.4.3建立动态链表3119.4.4输出链表3159.5共用体类型3179.5.1什么是共用体类型3179.5.2引用共用体变量的方式3189.5.3共用体类型数据的特点3199.6使用枚举类型3239.7用typedef声明新类型名326习题330第10章对文件的输入输出33110.1C文件的有关基本知识33110.1.1什么是文件33110.1.2文件名33210.1.3文件的分类33210.1.4文件缓冲区33310.1.5文件类型指针33310.2打开与关闭文件33510.2.1用fopen函数打开数据文件33510.2.2用fclose函数关闭数据文件33710.3顺序读写数据文件33810.3.1怎样向文件读写字符33810.3.2怎样向文件读写一个字符串34110.3.3用格式化的方式读写文件34410.3.4用二进制方式向文件读写一组数据34510.4随机读写数据文件34910.4.1文件位置标记及其定位34910.4.2随机读写 35210.5文件读写的出错检测353习题354第11章常见错误分析355附录370附录A在Visual C++ 6.0环境下运行C程序的方法370附录B常用字符与ASCII代码对照表377附录CC语言中的关键字378附录D运算符和结合性378附录EC语言常用语法提要380附录FC库函数384参考文献390第4章选择结构程序设计854.1选择结构和条件判断854.2用if语句实现选择结构874.2.1用if语句处理选择结构举例874.2.2if语句的一般形式 894.3关系运算符和关系表达式914.3.1关系运算符及其优先次序914.3.2关系表达式924.4逻辑运算符和逻辑表达式924.4.1逻辑运算符及其优先次序934.4.2逻辑表达式944.4.3逻辑型变量964.5条件运算符和条件表达式974.6选择结构的嵌套1004.7用switch语句实现多分支选择结构1024.8选择结构程序综合举例106习题112第5章循环结构程序设计1155.1为什么需要循环控制1155.2用while语句实现循环1165.3用do…while语句实现循环1185.4用for 语句实现循环1215.5循环的嵌套1255.6几种循环的比较1265.7改变循环执行的状态1265.7.1用break语句提前终止循环1275.7.2用continue语句提前结束本次循环1285.7.3break语句和continue语句的区别1295.8循环程序举例132习题141第6章利用数组处理批量数据1436.1怎样定义和引用一维数组1436.1.1怎样定义一维数组1446.1.2怎样引用一维数组元素1456.1.3一维数组的初始化1466.1.4一维数组程序举例1476.2怎样定义和引用二维数组1496.2.1怎样定义二维数组1506.2.2怎样引用二维数组的元素1516.2.3二维数组的初始化1526.2.4二维数组程序举例1536.3字符数组1556.3.1怎样定义字符数组1556.3.2字符数组的初始化1566.3.3怎样引用字符数组中的元素156 6.3.4字符串和字符串结束标志1576.3.5字符数组的输入输出1606.3.6使用字符串处理函数1626.3.7字符数组应用举例166习题169第7章用函数实现模块化程序设计171 7.1为什么要用函数1717.2怎样定义函数1737.2.1为什么要定义函数1737.2.2定义函数的方法1747.3调用函数1757.3.1函数调用的形式1757.3.2函数调用时的数据传递1767.3.3函数调用的过程1787.3.4函数的返回值1797.4对被调用函数的声明和函数原型181 7.5函数的嵌套调用1837.6函数的递归调用1857.7数组作为函数参数1937.7.1数组元素作函数实参1937.7.2数组名作函数参数1957.7.3多维数组名作函数参数1987.8局部变量和全局变量2007.8.1局部变量2007.8.2全局变量2017.9变量的存储方式和生存期2057.9.1动态存储方式与静态存储方式205 7.9.2局部变量的存储类别2067.9.3全局变量的存储类别2097.9.4存储类别小结2137.10关于变量的声明和定义2157.11内部函数和外部函数2167.11.1内部函数2167.11.2外部函数216习题219第8章善于利用指针2218.1指针是什么2218.2指针变量2238.2.1使用指针变量的例子2238.2.2怎样定义指针变量2248.2.3怎样引用指针变量2258.2.4指针变量作为函数参数2278.3通过指针引用数组2328.3.1数组元素的指针2328.3.2在引用数组元素时指针的运算2338.3.3通过指针引用数组元素2348.3.4用数组名作函数参数2398.3.5通过指针引用多维数组2478.4通过指针引用字符串2578.4.1字符串的引用方式 2578.4.2字符指针作函数参数2618.4.3使用字符指针变量和字符数组的比较265 8.5指向函数的指针2688.5.1什么是函数指针2688.5.2用函数指针变量调用函数2688.5.3怎样定义和使用指向函数的指针变量270 8.5.4用指向函数的指针作函数参数2728.6返回指针值的函数2768.7指针数组和多重指针2798.7.1什么是指针数组 2798.7.2指向指针数据的指针2828.7.3指针数组作main函数的形参2848.8动态内存分配与指向它的指针变量2878.8.1什么是内存的动态分配2878.8.2怎样建立内存的动态分配2878.8.3void指针类型 2898.9有关指针的小结290习题293第9章用户自己建立数据类型2959.1定义和使用结构体变量2959.1.1自己建立结构体类型2959.1.2定义结构体类型变量 2979.1.3结构体变量的初始化和引用2999.2使用结构体数组3029.2.1定义结构体数组3029.2.2结构体数组的应用举例3049.3结构体指针3059.3.1指向结构体变量的指针3059.3.2指向结构体数组的指针3069.3.3用结构体变量和结构体变量的指针作函数参数3089.4用指针处理链表3119.4.1什么是链表 3119.4.2建立简单的静态链表3129.4.3建立动态链表3139.4.4输出链表3179.5共用体类型3199.5.1什么是共用体类型3199.5.2引用共用体变量的方式3209.5.3共用体类型数据的特点3219.6使用枚举类型3259.7用typedef声明新类型名328习题332第10章对文件的输入输出33310.1C文件的有关基本知识33310.1.1什么是文件33310.1.2文件名33410.1.3文件的分类33410.1.4文件缓冲区33510.1.5文件类型指针33510.2打开与关闭文件33710.2.1用fopen函数打开数据文件33710.2.2用fclose函数关闭数据文件33910.3顺序读写数据文件34010.3.1怎样向文件读写字符34010.3.2怎样向文件读写一个字符串34310.3.3用格式化的方式读写文件34610.3.4用二进制方式向文件读写一组数据34710.4随机读写数据文件35110.4.1文件位置标记及其定位35110.4.2随机读写 35410.5文件读写的出错检测355习题356第11章常见错误分析374附录390附录A在Visual C++ 6.0环境下运行C程序的方法390 附录CC语言中的关键字398附录D运算符和结合性398附录EC语言常用语法提要400附录FC库函数404参考文献410。

通信原理 第09章 数据通信规程

通信原理 第09章  数据通信规程

在数据链路层上采取必要的控制手段对 数据信息的传输进行控制,使DTE与网 络或DTE与DTE之间能够有效、可靠地 传输数据信息。 数据链路控制规程是实 现链路控制、管理的相关规范、约定和 协议等,本章主要讲述常见的数据链路 通信控制规程,包括异步通信控制规程, BSC、HDLC等。
第9章 数据通信规程
图9-2 YMODEM协议数据帧格式
YMODEM协议不同于XMODEM 协议的地方是,数据块单元长度为1024 个字节。其它数据帧格式和XMODEM 协议一样。和XMODEM协议的其它差 异在于,在YMODEM协议中传输过程 开始后,接收方接收成功的帧并不向发 送方返回ACK,只对接收错误的帧返回 一个NCK,要求此帧重新发送。 YMODEM协议提供了一种批模式,在 此模式下,只有用一条命令就可以同时 传输多个文件。
SYN(Synchronous Idle)同步:用于 建立和保持收发两端的同步,SYN不能 放在DLE之后和与校验码有关系的控制 字符中间。 ETB (End of Transmission Block)数 据分组块传输结束:仅由发送端送出, 但校验码(BCC)仅随其后,但最后一 个信息码组的结束必须使用ETX。
并键入命令:Send FileName,这样就 激活了本地计算机上的Kermit协议。这 时,用户做的工作就完成了,Kermit完 成剩余部分。它在本地计算机上寻找一 个名为“FileName”的文件,并分组, 组的数量取决于文件的大小和每个分组 的大小。
图9.3 Kermit文件的传输
பைடு நூலகம்
在此协议中,以发送端向接收端发送 一初始化帧(S类型)来开始发送一个文件, 此帧通知接收端准备接收帧。S类型的帧和 它的最终确认帧包括了一些参数,如果两个 计算机之间要交换文件,那第它们必须按顺 序同意这些参数,从而使协议能正常工作。 它支持传输7位的ASCII字符,数据块能以 长达96字节的可变长度的分组形式传输, 对每个被传送的分组需要一个确认帧, Kermit协议支持批量文件的传输。Kermit 协议的帧格式如图9-4所示。

《谭浩强《C程序设计》(第4版)笔记和课后习题详解》读书笔记模板

《谭浩强《C程序设计》(第4版)笔记和课后习题详解》读书笔记模板

第11章常见错误分 析
1.1复习笔记 1.2课后习题详解
2.1复习笔记 2.2课后习题详解
3.1复习笔记 3.2课后习题详解
4.1复习笔记 4.2课后习题详解
5.1复习笔记 5.2课后习题详解
6.1复习笔记 6.2课后习题详解
7.1复习笔记 7.2课后习题详解
8.1复习笔记 8.2课后习题详解
作者介绍
这是《谭浩强《C程序设计》(第4版)笔记和课后习题详解》的读书笔记模板,暂无该书作者的介绍。
谢谢观看
目录分析
第2章算法——程 序的灵魂
第1章程序设计和C 语言
第3章最简单的C程 序设计——顺序程
序设计
1
第4章选择结构 程序设计
2
第5章循环结构 程序设计
3
第6章利用数组 处理批量数据
4 第7章用函数实
现模块化程序 设计
5
第8章善于利用 指针
第10章对文件的输 入输出
第9章用户自己建 立数据类型
9.1复习笔记 9.2课后习题详解
10.1复习笔记 10.2课后习题详解
11.1复习笔记 11.2课后习题详解
读书笔记
这是《谭浩强《C程序设计》(第4版)笔记和课后习题详解》的读书笔记模板,可以替换为自己的心得。
精彩摘录
这是《谭浩强《C程序设计》(第4版)笔记和课后习题详解》的读书笔记模板,可以替换为自己的精彩内容 摘录。
谭浩强《C程序设计》(第4版)笔记 和课后习题详解
读书笔记模板
01 思维导图
03 目录分析 05 精彩摘录
目录
02 内容摘要 04 读书笔记 06 作者介绍
思维导图
本书关键字分析思维导图
习题

C语言第1章 程序设计和C语言

C语言第1章 程序设计和C语言

00000101
00000001
00000000
能直接被机器识别和执行的用二进制代码描述的指令称
为机器指令,机器指令的集合称为机器语言。由于它更靠 近机器,也称为低级语言
早期编程语言只有机器语言,由于它难于记忆和掌握, 因此少数人能参与到编程的工作中。
目前我们主要使用高级语言编程,但也必须翻译为机器 语言才能被机器识别和执行整。理课翻件 译工作由编译软件实现。
➢ 不同的部分是本程序的精华处 ➢ 解题思路:
设置3个变量 ➢ a和b用来存放两个整数
printf(”sum is %d\n”,sum); ➢ sum用来存放和数
return 0;
用赋值运算符“=”把结果传
}
送给sum
整理课件
一个C程序概貌
1.每个C程序前面都有一些固定语句,暂且称 为程序头
#include <stdio.h> //预处理命令
来 每个C语言程序应该至少有一个主函数,也就是有一个名 称为main的函数
#include <stdio.h> int main( ) { 主函数类型
printf (”This is a C program.\n”); return 0; }
整理课件
理解3:
C程序的细胞是函数,每个函数都有函数的类型,函数的 名称和函数体,函数体放在一对{ ...函数体...}中间定界起
#include <stdio.h>
int main( )
{ int a,b,sum; a = 123; b = 456;
变量a,b,sum的声明 提供数据
变量为数据 提供在内存 存储的空间
sum = a + b; 数据处理

Oracle数据库管理与开发第9章 系统安全管理

Oracle数据库管理与开发第9章 系统安全管理

INSERT
SELECT
UPDATE
创建用户角色
创建用户角色的语法:
create role role_name [ not identified | identified by [password] | [exeternally] | [globally]]
试一试
创建一个名为designer的角色,该角色的口令为123456
创建用户
试一试
创建一个mr用户,口令为mrsoft,并设置默认的表空间为users,临时表 空间为temp的用户。
SQL> create user mr identified by mrsoft default tablespace users temporary tablespace temp;
安全特性
3.过程安全 过程方案的对象权限(其中包括独立的过程、函数和包)只有EXECUTE权限,将这个权限 授予需要执行的过程或需要编译另一个需要调用它的过程。 (1)过程对象。具有某个过程的EXECUTE对象权限的用户可以执行该过程,也可以编译引 用该过程的程序单元。过程调用时不会检查权限。具有EXECUTE ANY PROCEDURE系统权限的 用户可以执行数据库中的任何过程。当用户需要创建过程时,必须拥有CREATE PROCEDURE 系统权限或者是CREATE ANY PROCEDURE系统权限。当需要修改过程时,需要ALTER ANY PROCEDURE系统权限。 拥有过程的用户必须拥有在过程体中引用的方案对象的权限。为了创建过程,必须为过程 引用的所有对象授予用户必要的权限。 (2)包对象。拥有包的EXECUTE对象权限的用户,可以执行包中的任何公共过程和函数, 能够访问和修改任何公共包变量的值。对于包不能授予EXECUTE权限,当为数据库应用开发 过程、函数和包时,要考虑建立安全性。

C程序设计课件一二

C程序设计课件一二

K&R合著《The C Programming Language》
ANSI C: 1983年
87 ANSI C: 1987年
1990年国际标准的ANSI C ,1994年再次修订。
C版本
Microsoft C 或称 MS-CΒιβλιοθήκη Turbo C 或称 TC
<
>
C语言程序设计 C语言与自然语言的比较
double else
enum extern float
for
goto
if
int
long register return
short signed sizeof static struct
switch typedef unsigned union void
volatile while
Turbo C扩充了11个关键字:
asm
_cs
_ds
_es
_ss
huge
interrupt near
pascal
注意:在C语言中,关键字都是小写的。
cdecl
far
<
C语言程序设计
第一章 C语言概述
C语言有 9 种控制语句,程序书写形式自由 ,主要用小写字母表示,压缩了一切不必要 的成分。
9种控制语句: if( )~else~ for( )~ while( )~ do~while( ) continue break switch goto return
<
C语言程序设计 C语言运算符丰富(附录C)
第一章 C语言概述
34种运算符: 算术运算符:+ - * / % ++ -关系运算符:< <= == > >= != 逻辑运算符:! && || 位运算符 :<< >> ~ | ^ & 赋值运算符:= 及其扩展 条件运算符:?: 逗号运算符:, 指针运算符:* & 求字节数 :sizeof 强制类型转换:(类型) 分量运算符:. -> 下标运算符:[] 其它 :( ) 注意:各种运算符混合使用,其优先级与结

C语言上机实验5-12

C语言上机实验5-12

17.5实验5循环结构程序设计1.实验目的(1)熟悉掌握用while语句、do…while语句和for语句实现循环的方法。

(2)掌握在程序设计中循环的方法实现一些常用的算法(如穷举、迭代、递推等)。

(3)进一步学习调试程序。

2.实验内容编程并上机调试运行(1)输入一行字符、分别统计出其中的英文字母、空格、数字和其他字符的个数(本题是教材第5章第4题)在得到正确结果后,请修改程序使之能分别统计大小写字母、空格、数字和其他字符的个数。

(2)输出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其个位数字立方和等于该数本身。

例如,153是一个水仙花数,因为153=1³+5³+3³(本题是教材第五章第8题)。

(3)猴子吃桃问题。

猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。

第二天早上又将剩下的桃子吃掉一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个。

到第10天早上想再吃,只剩一个桃子了。

求第一天共摘了多少桃子(本题是教材第五章第12题)。

再得到正确结果后,修改题目,改为猴子每天吃了前一天剩下的一半后,再吃两个。

请修改程序并运行,检查结果是否正确。

(4)用牛顿迭代法求方程2X³=4x²+3x-6=0在1.5附近的根(本题是教材第五章第13题,学过高等数学的读者可选做此题)。

再得到正确结果后,请修改程序所设的X初始值由1.5改为100,1000,1000,再运行,观察结果,分析不同的x初值对结果有什么影响,为什么?修改程序,使之能输出迭代的次数和每次迭代的结果,分析不同的x初始值对迭代的次数有无影响。

3.预习内容预习教材第5章。

17.6实验6数组1.实验目的(1)掌握一维数组和二维数组的定义、赋值和输入输出的方法。

(2)掌握字符数组和字符串函数的使用。

(3)掌握与数组有关的算法(特别是排序算法)。

2.实验内容编程序并上机调试运行。

浙江师范大学886软件工程综合基础2020年考研专业课初试大纲

浙江师范大学886软件工程综合基础2020年考研专业课初试大纲

浙江师范大学硕士研究生入学考试初试科目考 试 大 纲科目代码、名称:886软件工程综合基础适用专业:083500软件工程(一级学科)、085400电子信息(软件工程领域)一、考试形式与试卷结构(一)试卷满分及考试时间本试卷满分为150分,考试时间为180分钟。

(二)答题方式答题方式为闭卷、笔试。

试卷由试题和答题纸组成;答案必须写在答题纸(由考点提供)相应的位置上。

(三)试卷题型结构(一)C程序设计部分,满分60分,其中:1、单项选择题:10小题,每小题3分,共30分2、程序设计题:3小题,每小题10分,共30分(二)软件工程基础部分,满分90分,其中:1、分析设计题:3小题,每小题15分,共45分2、综合论述题:3小题,每小题15分,共45分二、考查目标(复习要求)软件工程专业全日制学术型研究生入学考试科目《软件工程综合基础》的考试内容包括C程序设计和软件工程基础两部分。

其中:C程序设计部分要求考生掌握C语言的基本内容及程序设计的基本方法、常用算法与编程技巧,掌握结构化程序设计思想,选择适当的数据类型表示实际问题,能使用函数进行模块化程序设计,掌握应用计算机解决和处理实际问题的思维方法与基本能力。

软件工程基础部分要求考生掌握软件工程的基本概念、基本原理、基本方法和技术,理解规范化、文档化在软件生命周期过程中的重要性,并能运用相关理论和方法解决软件工程中的实际问题。

三、考查范围或考试内容概要C程序设计部分第一章程序设计与C语言1.了解计算机语言的基本概念。

2.了解C语言的背景、特点。

3.掌握C语言程序的结构。

第二章算法——程序的灵魂1.了解算法的概念、特性。

2.了解结构化程序设计方法。

3.掌握算法的描述方法。

第三章最简单的C程序设计——顺序程序设计1.掌握C语言的常量与变量;整型、浮点型、字符型数据。

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

(* pdate).year = 1963;
9.3.2 指向结构体数组的指针
例9.6 有3个学生的信息,放在结构体数 组中,要求输出全部学生的信息。
解题思路:用指向结构体变量的指针处理
(1)声明struct Student,并定义结构体数组、初 始化
9.1.2 定义结构体类型变量
(2) 结构体类型中的成员名可以与程序中的变量名
相同,但二者不代表同一对象。 (3) 对结构体变量中的成员(即“域”),可以单 独使用,它的作用与地位相当于普通变量。结
构体中成员的使用方法:
结构体变量名 . 成员名称
例:要用结构体描述一个人的基本情况,可以定义如下结构体: struct person { /* 定义person结构体类型 */ char name[30]; char sex; struct date birthday; /* 结构体的嵌套定义 */ } man; 如果要在变量man中存入一个1960年3月28日出生的zhang先生, 可以采用如下赋值语句: strcpy(, “zhang”); /*不能写成 ="zhang"; */ man.sex = ‘M’; /* 为结构体中的字符成员赋值 */ man.birthday.year = 1960; man.birthday.month = 3; man.birthday.day = 28; /*嵌套定义的结构体中的成员赋值*/
#include <stdio.h> #define N 5 struct Student { int num; char name[20]; float score; }; int main() { struct Student stu[5]={{10101,"Zhang",78 }, {10103,"Wang",98.5}, {10106,"Li", 86 }, *10108,“Ling”, 73.5+, *10110,“Fun”, 100 + +; 注意 temp的类型 struct Student temp; const int n = 5 ; int i,j,k;
对结构数组可以作初始化赋值。
例如: struct stu { int num; char name[10]; char sex; float score; } student[5]={ {101,"Li ping","M",45}, {102,"Zhang ping","M",62.5}, {103,"He fang","F",92.5}, {104,"Cheng ling","F",87}, {105,"Wang ming","M",58}; }
写法上与普通变量一致
}
9.3 结构体指针
9.3.1 指向结构体变量的指针 9.3.2 指向结构体数组的指针 9.3.3 用结构体变量和结构体变量的指针 作函数参数
9.3.1 指向结构体变量的指针
指向结构体对象的指针变量既可以指向 结构体变量,也可以用来指向结构体数 组中的元素。 指针变量的基类型必须与结构体变量的 类型相同。例如:
9.1.3 结构体变量的初始化和引用
例9.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\n sex:%c\naddress:%s\n", a.num,,a.sex,a.addr); return 0; }
9.1.1 自己建立结构体类型
ቤተ መጻሕፍቲ ባይዱ 说明:
(1)结构体类型并非只有一种,而是可以设 计出许多种结构体类型,例如
struct Teacher
struct Worker struct Date等结构体类型 各自包含不同的成员
9.1.1 自己建立结构体类型
(2) 成员可以属于另一个结构体类型。 struct Date { int month; int day; int year; }; struct Stu { int num; char name[20]; char sex; int age; struct Date birthday; char addr[30]; };
struct Student *pt;
结构体指针说明的一般形式 struct 结构体类型名称 * 结构体指针变量名; 例如: struct date * pdate, today; 说明了两个变量,一个是指向结构体date的结构体指 针pdate,today是一个 date 结构体变量。 执行语句:pdate = &today;
#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\n sex:%c\naddress:%s\n", a.num,,a.sex,a.addr); return 0; }
struct 结构体名
{ 成员表列 }; 类型名 成员名;
9.1.1 自己建立结构体类型
struct Student { int num; char name[20]; char sex; int age; float score; char addr[30]; }; 由程序设计者指定了 一个结构体类型struct Student 它包括num, name, sex, age, score, addr等不同 类型的成员
9.1.1 自己建立结构体类型
用户自己建立由不同类型数据组成的组 合型的数据结构,它称为结构体 例如,一个学生的学号、姓名、性别、 年龄、成绩、家庭地址等项,是属于同 一个学生的,因此组成一个组合数据, 可以定义一个学生结构体类型。
9.1.1 自己建立结构体类型
结构体定义的一般形式:
struct student { char num[10]; //学号 char name[20]; //姓名 float maths; //数学成绩 float C; //程序设计成绩 float sum; //总分 } stud[100];
for(i=0;i<100;i++) scanf(“%s%s%f%f”, stud,i-.num, stud,, &stud[i].maths, &stud[i].C); for(i=0;i<100;i++) printf(“%8s%8s%5.0f%5.0f”, stud,i-.num, stud,, stud[i].maths, stud[i].C);
birthday num name sex age addr month day year
9.1.2 定义结构体类型变量
前面只是建立了一个结构体类型,它相当 于一个模型,并没有定义变量,其中并无 具体数据,系统对之也不分配存储单元。
为了能在程序中使用结构体类型的数据, 应当定义结构体类型的变量,并在其中存 放具体的数据。
9.2 使用结构体数组
9.2.1定义结构体数组
9.2.2 结构体数组的应用举例
9.2.1定义结构体数组
结构体数组的定义:
① struct 结构体名 {
成员表列
} 数组名[数组长度]; ② 先声明结构体类型,再用此类型定义结构体数组: 结构体类型 数组名[数组长度]; 如: struct Person leader[3];
struct Student s1, s2;
结构体类型名
结构体变量名
10001 Zhang Xin M 19 90.5 Shanghai
9.1.2 定义结构体类型变量
2.在声明类型的同时定义变量
struct Student { int num; char name[20]; char sex; int age; float score; char addr[30]; } s1, s2;
struct Student { int num; char name[20]; char sex; 1. 先声明结构体类型,再定义该类型变量 int age; float score; 声明结构体类型 struct Student,可以用它 char addr[30]; };来定义变量
9.1.2 定义结构体类型变量
第9章 用户自己建立数据类型
9.1 定义和使用结构体变量
9.2 使用结构体数组
9.3 结构体指针
9.4 用指针处理链表 9.5 共用体类型 9.6 使用枚举类型 9.7 用typedef声明新类型名
9.1 定义和使用结构体变量
9.1.1 自己建立结构体类型
9.1.2 定义结构体类型变量
9.1.3 结构体变量的初始化和引用
pdate
today year month day today.year即(*pdate).year today.month 即(*pdate).month today.day 即(*pdate).day
相关文档
最新文档