C语言实验报告八.docx
南京信息工程大学 实验(实习)报告实验(实习)名称国指针及其应用日期2019.5.30得分指导老师瞿治系专业年级2018 级班次 班 姓名学号一、实验目的1.实验目的(1) 掌握变量的指针及其基本用法。(2) 掌握一维数组的指针及其基本用法。(3) 掌握指针变量作为函数的参数时,参数的传递过程及其用法。二、实验内容(1) 运行以下程序,并从中了解变量的指针和指针变量的概念。# include <stdio.h> int main()int a=5,b=5*,p; p=&a;printf("%d ,%udn",a,p);*p=8;printf("%d ,%udn",a,p); p=&b;printf("%d ,%udn",a,p); b=10;printf("%d ,%udn",a,p); return 0;(2) 运行以下程序,观察&a0、&ai和 p 的变化,然后回答以下问题: 程序的功能是什么? 在开始进入循环体之前,p 指向谁? 循环每增加一次,p 的值(地址)增加多少?它指向谁? 退出循环后,p 指向谁? 你是否初步掌握了通过指针变量引用数组元素的方法?# include <stdio.h> int main()int i,*p,s=0,a5=5,6,7,8,9;p=a; for(i=0;i<5;i+,p+) s+=*p;第 1 页 共 4 页printf("n s=%d",s); return 0;(3) 编写函数,将n 个数按原来的顺序的逆序排列(要求用指针实现),然后编写主函数完成: 输入 10 个数。 调用此函数进行重排。 输出重排后的结果。三、实验步骤和实验结果第一个程序输入后第二个程序输入后可以知道程序的功能是计算数组里所有元素的和在开始进入循环之前p 指向 a 数组的首地址循环每增加一次,p 的值增加数组内一个元素字节长度,且指向下一个数组元素退出循环后,p 指向最后一个元素已初步了解掌握通过指针变量引用数组元素的方法第三个程序写出来:#include <stdio.h> #define N 10void inv(int *,int); int main()int i,aN; for(i=0;i<N;i+)第 2 页 共 4 页scanf("%d",&ai); printf("逆置前:n"); for(i=0;i<N;i+) printf(" %d",ai); printf("n");inv(a,N);printf("逆置后:n"); for(i=0;i<N;i+) printf(" %d",ai); return 0;void inv(int *x,int n)int *p,*q,t; p=x; q=x+n-1; while(p<q)运行后t=*p;*p=*q;*q=t; p+; q-;四、分析与讨论数据的存储地址是指针,它的值是内存单元的地址编号,描述了数据在计算机内存中存储的形式,反映了计算机处理信息的基本过程;利用数组可以实现的功能,指针也可以做到,甚至更方便。第 3 页 共 4 页五、实验小结我们可以认为数组与指针有着一定的区别和联系。数组名是一个静态的指针,而指针变量中的指针是一个动态的量,二者之间关系紧密,有时可以相互替代。第 4 页 共 4 页