资源预览内容
第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
第9页 / 共12页
第10页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
实验八、指针(二)实验八、指针(二)1教学教学进程:教学教学进程: 序号章节名称19.4指针与字符串29.5指针与函数39.6指针数组和多级指针 2考查知识点:考查知识点: 指针与字符串,指针作为函数的参数,函数指针,指针函数,指针数组。 3实验目的:实验目的: (1) 掌握指针与字符串的关系。 (2) 能正确使用指向函数的指针变量和返回指针的函数。 (3) 了解指向指针的指针的概念及使用方法。 4实验内容:实验内容: 课外实验题目(90 分): 如下图所示,本程序由若干个文件组成。其中主函数在文件“main.c”中。其它文件中 包含了相应的子程序、变量定义和宏定义。请阅读程序完成题目要求。(1)由于采用了指向函数的指针作为 fenzhi()函数的参数,所以在主函数中每个分 支只有一条函数调用语句。请在 fenzhi()函数中填写 case E:段的相对应程序。 (10 分)(2)文件“fun4.c”中由条件编译指令分为两个不同的代码段,请分别填写两段代码中 的子程序 copy_string()的内容,使程序分别完成字符串的复制。 (每段 10 分,共 20 分)(3)在文件“fun5.c”中,采用返回指针值的函数返回查询数据的地址。请填写子程序 search()的内容。 (10 分)(4)填写程序中的空白,实现内存的管理。具体操作见提示。 (每空 5 分,共 50 分)序号序号内容内容 1 2 3 4 5 6 7 8 9 10提示:所谓的自由分配和释放内存,指的是在指定的范围内进行。本题的管理范围是以 allocbuf 为起始地址,以 ALLOCSIZE 为长度的空间内进行内存管理。如下图所示,pointers为 指针数组,其中每一个元素指向开辟的空间首地址。p_size存放每一个指针对应的空间的 长度。指针 allocp 永远指向待分配的空间,初始情况下,allocp 指向整个空间的首址。添加时在 p_size 中按照下标顺序查询值为 0 的元素,说明在 pointers 中对应的元素还没 有指向任何空间,就将该指针指向新开辟的空间,对应的空间长度存在 p_size 中。删除空间时,对应指针后面的指针都要向前移动,保证再次开辟空间的连续性。被释放 的指针对应的长度也要被清除。 程序代码(题目部分):程序代码(题目部分): /*main.c*/ #include #include“publicFun.h“ #include“globalVaria.h“ main() int enter_flag=0; while(1) if(enter_flag=0)enter_flag=display(0,“,title0,mulu,“); else if(enter_flag=2) break; switch(getchar() case D: enter_flag=fenzhi(subject0,title1,mulu,mulu1,fun4); break; case E: enter_flag=fenzhi(subject1,title2,mulu,mulu1,fun5); break; case F: enter_flag=fenzhi(subject2,title3,mulu,mulu1,fun6); break; case G: getchar(); enter_flag=display(4,“,“,“,“); break; default:break; /*fenzhi()*/ int fenzhi(char subject,char title,char mulu,char mulu1,void (*fun)() int enter_flag=0; getchar(); while(1) if(enter_flag=0)enter_flag=display(1,“,title,“,mulu1); switch(getchar() case R: getchar(); enter_flag=display(2,subject,title,“,“);break; case E:case C: getchar(); return 0; default: break; /*fun4.c*/ #include #define SELECTION 1#if(SELECTION) void copy_string(char from,char to) void fun4() char a=“I am a teacher.“; char b=“You are a student.“; printf(“string_a=%snstring_b=%sn“,a,b); copy_string(a,b); printf(“nstring_a=%snstring_b=%sn“,a,b); #elsevoid copy_string(char *from,char *to) void fun4() char a=“I am a teacher.“; char b=“You are a student.“; printf(“字符串字符串_a=%sn 字符串字符串_b=%sn“,a,b); copy_string(a,b); printf(“n 字符串字符串_a=%sn 字符串字符串_b=%sn“,a,b); #endif/*fun5.c*/ #includevoid fun5() float score4=60,70,80,90,56,89,67,88,34,78,90,66;float *search(float (*pointer)4,int n), *p;int i,m;printf(“Enter the number of student:“);scanf(“%d“, getchar();printf(“The scores of No.%d are:n“,m);p=search(score,m);for(i=0;i #define NULL 0 #define ALLOCSIZE 1000 #define POINTERSIZE 10char allocbufALLOCSIZE; char *allocp=allocbuf;char *pointersPOINTERSIZE=NULL; int p_sizePOINTERSIZE=0; int cp_pointer=0;void fun6() int n,i; char * alloc(int n); void free_oc(char *p); void view(); printf(“A:分配内存;:分配内存;nF:释放内存;:释放内存;nV:查看内存;:查看内存;nC:返回:返回n“);while(1) switch(getchar() case A: getchar(); printf(“请输入分配空间的字节数:请输入分配空间的字节数:“); scanf(“%d“, getchar(); for(i=0;i0) allocp+=n; else return(NULL); void free_oc(char *p) int i; i= ; pointersi+1=pointersi; pointersi=NULL; p_sizei=0; for(i+;i #include“publicFun.h“ #include“globalVaria.h“main() int enter_flag=0; while(1) if(enter_flag=0)enter_flag=display(0,“,title0,mulu,“); else if(enter_flag=2) break;switch(getchar() case A: while(enter_flag=fenzhi(subject0,title1,mulu,mulu1) fun1(); printf(“n%s“,hint); break; case B: while(enter_flag=fenzhi(subject1,title2,mulu,mulu1) fun2(num); printf(“n%s“,hint); break; case C: while(enter_flag=fenzhi(subject2,title3,mulu,mulu1) fun3(); printf(“n%s“,hint); break; case D: while(enter_flag=fenzhi(subject3,title4,mulu,mulu1) fun3(); printf(“n%s“,hint); break; case E: while(enter_flag=fenzhi(subject4,title5,mulu,mulu1) fun3(); printf(“n%s“,hint); break; case F: while(enter_flag=fenzhi(subject5,title6,mulu,mulu1) fun3(); printf(“n%s“,hint); break;case G: getchar(); enter_flag=display(4,“,“,“,“); break; default:break; /*globalVaria.c*/ int num50; char title50=“ 欢迎学习指针欢迎学习指针 “, “ 指针与指针变量指针与指针变量 “, “ 指针与一维数组指针与一维数组 “, “ 指针与二维数组指针与二维数组 “, “ 指针与字符串指针与字符串 “, “ 指针与函数指针与函数 “, “ 指针数组指针数组 “;char subject100=“【题目题目 1】采用指针变量实现地址传递,从而使用函数将两个整数进采用指针变量实现地址传递,从而使用函数将两个整数进行交换。行交换。“,“【题目题目 2】n(n #include #include“globalVaria.h“int display(int type,char subject,char title,char mulu50,char mulu130) int i; char c
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号