预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

C语言高级编程及实例分析 第一章:内存管理 c语言对程序精心编译时,将函数中命令、语句编译成相应序列的机器指令代码,放在代码段;将已初始化的数据,如已赋值的全局变量、静态局部变量等,放在数据段;将未初始化的数据放在BBS段内;将临时数据,如函数调用时传递的参数、局部变量、返回调用时的地址等放在栈段内;而对一些动态变化的数据,如在程序执行中建立的一些数据结构,如链表,动态数组等,则放在堆结构中。 内存管理系统是操作系统的重要部分。C语言中使用malloc()函数和free()函数来分配和释放内存。再次释放已经释放的内存和释放未被分配的内存都会造成系统的崩溃。 PC存储器结构 PC机存储器结构分为主存储器、外存储器和高速缓存几个部分。 1.1.4内存编译模式 编译模式是指如何在内存中放置程序代码及数据,如何分配堆栈,并确认占用的内存大小及如何存取它们,当指定内存模式以后,语言编译程序将按事先选择好的内存模式编译组织程序。C语言提供了6种编译模式,分别是:微模式,小模式,紧凑模式,中模式,大模式和巨模式。 1.1.5堆概念和结构 堆是一种动态的存储结构(存储链表,动态数组等),实际上就是数据段的自由存储区。 1.1.6堆管理函数 1.malloc()函数 用来分配内存。函数原型为void*malloc(unsignedsize) 如:int*p; P=(int*)malloc(sizeof(int)); 如果要分配100个int型的空间时,表示为:int*p=(int*)malloc(sizeof(int)); 2.free()函数 用来释放内存。函数原型为void*free(指针变量) 如:int*p=(int*)malloc(4); *p=100; free(p); 3.realloc()函数 用来重调空间的大小,函数声明为:void*realloc(void*block,intsize); block是指向要扩张或缩小的内存空间的指针。Size指定新的大小。 4.calloc()函数 用来分配一个能容纳n个元素,每个元素长度为size的内存空间。函数声明为void*calloc(size_tnelem,size_telsize)。该函数将分配一个容量为nelem*size大小的空间,并用0初始化该内存区域,即每个地址装入0.该函数将返回一个指向分配空间的指针。如果没有空间可用,则返回NULL指针。若在大数据模式下建立远堆,则可用farmalloc函数。 1.2.2函数剖析 1函数init_Heap() 实现了初始化内存分配程序的功能 2函数My_Free() 完成函数释放内存的功能 函数Allocate() 实现了分配按指定大小分配内存块的功能 :文件高级操作 字符型(文本型)文件和二进制文件{有什么区别?} 标准库函数 ①文件打开(fopen) 函数原型FILE*fopen(char*filename,char*mode) ②文件关闭(fclose) 函数原型int*fclose(FILE*fp) 字节(字符)读写函数fgetc和fputc 字符串读写函数fgets和fputs 数据块读写函数fread和fwrite 格式会读写函数fscanf和fprint ①字符串读函数fgets Char*fgets(char*s,intn,FILE*filepointer); ②字符串写函数fputs Intfputs(char*s,FILE*filepointer) ③数据块读函数fread Unsignedfread(void*ptr,unsignedsize,unsignedn,FILE*filepointer) ④数据块写函数fwrite Unsignedfwrite(void*ptr,unsignedsize,unsignedn,FILEfilepointer) ①格式化读fscanf Intscanf(FILE*filepointer,constchar*format,[&a,&b,...]) ②格式化写fprintf Intfprintf(FILE*filepointer,constchar*format,[表达式列表,...]); 文件定位操作 ①rewind函数 函数原型:voidrewind(FILE*filepointer); 功能:将filepointer所指向的文件的位置指针重新置回到文件的开头 ②fseek函数 函数原型:intfseek(FILE*fp,longoffset,intwhence) 功能:whence基准点;offset从基准点开始移动的字节数; ③ftell函数 函数原型:longftell(FILE*filepointer); 功能:返回文件的当前位置; ④feof函数 原型: