C语言高级编程及实例分析
第一章:内存管理
c语言对程序精心编译时,将函数中命令、语句编译成相应序列的机器指令代码,放在代码段;将已初始化的数据,如已赋值的全局变量、静态局部变量等,放在数据段;将未初始化的数据放在BBS段内;将临时数据,如函数调用时传递的参数、局部变量、返回调用时的地址等放在栈段内;而对一些动态变化的数据,如在程序执行中建立的一些数据结构,如链表,动态数组等,则放在堆结构中 。
内存管理系统是操作系统的重要部分。C语言中使用malloc()函数和free()函数来分配和释放内存。再次释放已经释放的内存和释放未被分配的内存都会造成系统的崩溃。
1.1.1 PC存储器结构
PC机存储器结构分为主存储器、外存储器和高速缓存几个部分。
1.1.4 内存编译模式
编译模式是指如何在内存中放置程序代码及数据,如何分配堆栈,并确认占用的内存大小及如何存取它们,当指定内存模式以后,语言编译程序将按事先选择好的内存模式编译组织程序。C语言提供了6种编译模式,分别是:微模式,小模式,紧凑模式,中模式,大模式和巨模式。
1.1.5 堆概念和结构
堆是一种动态的存储结构(存储链表,动态数组等),实际上就是数据段的自由存储区。
1.1.6 堆管理函数
1.malloc()函数
用来分配内存。函数原型为void *malloc(unsigned size)
如: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,int size);
block是指向要扩张或缩小的内存空间的指针。Size指定新的大小。
4.calloc()函数
用来分配一个能容纳n个元素,每个元素长度为size的内存空间。函数声明为void *calloc(size_t nelem,size_t elsize)。该函数将分配一个容量为nelem *size大小的空间,并用0初始化该内存区域,即每个地址装入0.该函数将返回一个指向分配空间的指针。如果没有空间可用,则返回NULL指针。若在大数据模式下建立远堆,则可用farmalloc函数。
1.2.2 函数剖析
1 函数init_Heap()
实现了初始化内存分配程序的功能
2函数My_Free()
完成函数释放内存的功能
3 函数Allocate()
实现了分配按指定大小分配内存块的功能
第3章:文件高级操作
字符型(文本型)文件和二进制文件{有什么区别?}
标准库函数
①文件打开(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,int n,FILE *filepointer);
②字符串写函数fputs
Int fputs(char *s,FILE *filepointer)
③数据块读函数fread
Unsigned fread(void *ptr,unsigned size,unsigned n,FILE *filepointer)
④数据块写函数fwrite
Unsigned fwrite(void *ptr,unsigned size,unsigned n,FILE filepointer)
①格式化读fscanf
Int scanf(FILE *filepointer,const char *format,[&a,&b,...])
②格式化写fprintf
Int fprintf(FILE *filepointer,const char *format,[表达式列表,...]);
文件定位操作
①rewind函数
函数原型:void rewind(FILE *filepointer);
fread和fwrite的区别功能:将filepointer所指向的文件的位置指针重新置回到文件的开头
②fseek函数
函数原型:int fseek(FILE *fp,long offset,int whence)
功能:whence 基准点; offset 从基准点开始移动的字节数;
③ftell函数
函数原型:long ftell(FILE *filepointer);
功能:返回文件的当前位置;
④feof函数
原型:int feof(FILE *fp);
功能:判断fp所代表的文件是否结束
Stdin 标准输入(键盘)
Stdout 标准输出(显示器)
Stdaux 标准辅助输入输出(异步串行口)
Stdprn 标准打印(打印机)
Stderr 标准错误输出(显示器)
简单的来说,++i 和 i++,在单独使用时,就是 i=i+1。
而 a = ++i,相当于 i=i+1; a = i;
而 a = i++,相当于 a = i; i=i+1;
而 a = ++i,相当于 i=i+1; a = i;
而 a = i++,相当于 a = i; i=i+1;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论