C语言链表及文件操作_第1页
C语言链表及文件操作_第2页
C语言链表及文件操作_第3页
C语言链表及文件操作_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、编译预处理和动态存贮分配不带参数的宏定义定义形式#define 宏名替换文本或 #define 宏名(在 define 宏名和宏替换文本之间有空格;可以用#undef 命令终止宏定义的作用域;在进行宏定义是,可以引用已定义的宏名;同一个宏名不能重复定义。)带参数的宏定义定义形式#define 宏名(参数表)字符串宏定义不只进行简单的字符串替换,还可进行参数的替换执行过程:(如果程序中有带实参的宏,则按#define 命令行中指定的字符串从左到右进行置换;如果字符串中包含形参,则将程序语句中相应的实参代替形参;如果宏定义中的字符串中的字符不是参数字符,则保留。这样就形成了置换的字符串;)带参数的

2、宏和函数的相同之处在引用函数时是在函数右面的括号写实参;要求实参与形参数目相等。带参数的宏和函数的不同之处函数调用是,要求实参、形参类型相匹配,但宏替换中,对参数没有类型的要求;函数调用时, 先求出实参的表达式的值,然后带入形参, 而带参数的宏只是进行简单的字符串替换;函数调用是在程序进行时处理的,要分配临时的内存单元,还要占用一系列的处理时间。宏替换在编译预处理完成,因此, 宏替换不占用运行时间,不被分配内存单元,不进行之的传递,也没有返回值的概念;使用宏的次数较多时,宏展开后源程序变长,而函数调用不会。第十一章结构体和共用体11.1 用typedef说明一种新类型名1、一般形式:typed

3、ef 类型名标识符;其中, 类型名 一定是在此之前已有定义的类型标识符。“标识符”是一个用户定义标识符,用来标识新的类型名。2、typedef 语句的作用:用“标识符”来代表已存在的“类型名”,并没有产生新的数据类型,因此,原有的类型名依然有效。3、声明一个新的类型名的具体步骤:a、先按定义变量的方法写出定义的主体b、将变量名换成新类型名c、在最左面加上关键字typedef d、然后可以用新类型名去定义其他的变量 11.2 链表1、链表定义:是一种常见的重要的数据结构,它是动态地进行存储单元分配的一种结构。a、链表中的各元素在内存中不一定是连续存放的。要找链表中某一元素,必须先找到上个元素,

4、根据该元素提供的下一元素的地址才能找到下一个元素。所以, 如果没有头指针(head) ,则整个链表都无法访问。b、这种链表数据结构,必须利用指针变量才能实现。即一个节点中应包含一个指针变量,用它存放下一节点的地址。c、链表最后一个节点的指针域不要存放地址时,就置成/o值,标志着链表结束,链表的每个结点只有一个指针域,每个指针域存放下一个节点的地址。d、每一个链表都用一个“头指针”变量来指向链表的开始,称之为head 指针。 在 head指针中存放了链表第一个节点的地址。2、建立单向链表单线链表中,每个结点应该由两个成员组成:整型的成员;指向自身结构的指针类型成员。结点的类型结构定义如下:str

5、uct slist int data; struct slist * next; ; typedef struct slist slist; 建立单向链表的主要步骤如下:a、读取数据;b、生成新结点;c、将数据存放结点的成员变量中。d、将新结点插入到链表中。e、重复上述操作顺序访问链表各个结点的数据域;在单向链表中插入结点的步骤如下:a、首先要确定插入的位置;b、当插入结点在指针的结点之前称为“前插”;c、当插入结点在指针的结点之后称为“后插”;d、当进行“前插”操作时,需要3 个工作指针(假设为s1,s2 和 s3).用 s1 来指向新开辟的结点;用s2 指向插入的位置;s3指向 s2 的前

6、趋结点。删除单向链表中的结点的步骤如下:a、首先要找的到待删结点的前趋结点。b、然后将此前趋结点的指针域去指向待删结点的后续结点c、最后释放被删节的所占用的存储空间即可。第十二章文件1、fopen()函数调用形式: fopen(文件名,文件使用方式);a、函数返回一个指向file 类型的指针,赋给文件指针变量fp,从而把指针fp 与文件联系起来,在此调用之后指针fp 就指向了文件;b、无论哪种使用凡是,当打开文件时出现了错误,fopen 函数都将返回null 。2、常用文件打开方式及其含义:a、r:为读而打开文本文件。当指定这种方式时,对打开的文件只能进行读操作。若指定文件不存在,则会出错。另

7、外一些情况,如企图去读一个不允许读的文件时也会出错。b、rb 为读而打开一个二进制文件。其余功能与r 相同。c、w:为写而打开文本文件。这时,如果指定的文件不存在,系统将用在fopen 调用中指定的文件名建立一个新的文件,如果指定的文件已存在,则将从文件的起始位置开始写,文件中原有的内容将全部消失。d、wb :为写而打开一个二进制文件。其余功能与w 相同,但从指定位置开始写。e、a:为在文件后面添加数据而打开文本文件。这时,如果指定的文件不存在,系统将用在fopen 调用中指定的文件名建立一个新的文件;如果指定的文件存在,则文件中原有的文件内容将保存,新的数据写在原有的内容之后。f、ab :为

8、在文件后面添加数据而打开一个二进制文件。其余功能与a相同g、r+:为读和写而打开文本文件。用这种方式时,指定的文件应当已经存在。既可以对文件进行读,也可以对其进行写,在读和写操作之间不必关闭文件。只是对于文本文件来说,读和写总是从文件起始位置开始。在写新数据时, 只覆盖信数据所占据的空间,其后的数据并不丢失。h、rb+:为读和写而打开一个二进制文件。功能与 r+相同。 只是在读和写时,可以由位置函数设置读和写的起始位置,也就是说不一定从文件的起始位置开始读和写。i、w+:首先建立一个新文件,进行写操作,随后可以从头开始读。如果文件已存在,则原有的内容将全部消失。j、wb+:功能与w+相同,制度化izai 随后的读和写时,可以有位置函数设置起始位置。k、a+:功能与 a 相同,只是在文件尾部添加新的数据后,可以从头开始读。l、 ab+:功能也 a+相同只是在文件尾部添加新的数据后,可以由位置函数设置开始读的起始位置。、 、 、 、 、 、 、b 二进制文件可设置起始位置、 、 、 、 、+ 从头开始读、 、 、 、2、fclose()函数调用形式fclose(文件指针)a、若对文件操作方式为读方式,则经以上函数调用之后,要使文件指针与文件脱离联系。可以重新分配文件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论