实验六 指针
实验课程名:高级语言程序设计(C)
专业班级: 学号: 姓名:
实验时间: 实验地点: 指导教师:
一、实验目的和要求 1. 通过实验进一步掌握指针的概念,会定义和使用指针变量; 2. 能正确使用数组的指针和指向数组的指针变量; 3. 能正确使用字符串的指针和指向字符串的指针变量; 4. 能正确使用指向函数的指针变量; 5. 了解指向指针的指针的概念及其使用方法。 二、实验内容 1、任务名称 1.上机验证以下c70101.c程序的运行结果 #include void main() { int i,j,*pi,*pj; pi=&i; pj=&j; i=5; j=7; printf(\"\\n%d\%d\%d\%d\printf(\"\\n%d\%d\%d\%d\} 运行结果 : 5 7 -34 -32 -34 5 -32 7 运行结果分析:指针的值与指针指向的变量值的区别。在VC环境下,以上运行结果中的负数是另一个值。 2、任务名称 源代码: #include void main(){ int i,a[]={1,2,3},*p; p=a; /*将数组a首地址赋给指针p*/ for (i=0;i<3;i++) printf(\"%d,%d,%d,%d\\n\} 运行结果:(需要截图) 运行结果分析:把数组a[3]的首地址a存入指针变量p,所以a[i]和p[i],*(p+i),*(a+i)表示数组a[3]中的元素。 3、任务名称 源代码: #include void main() { int j,a[12],*p=a; for(j=0;j<12;j++) scanf(\"%d\ p=a; for(j=1;j<=12;j++) { printf(\"%4d\ if(j%4 == 0) printf(\"\\n\"); } } 运行结果:(需要截图) 运行结果分析: 把数组a[12]的首地址赋给指针变量p,指针p指向数组a的第一个元素。在for循环中依次输入12个数,最后输出数组中的元素。 4、任务名称 源代码: #include void main( ) { int a,b,c,*p=&c; void sum(int ,int ,int *);void swap(int * ,int * ); scanf(\"%d%d\ sum(a,b,p); swap(&a,&b); printf(\"sum=%d\\n\ printf(\"a=%d,b=%d\\n\} void sum(int a,int b,int *c) { *c=a+b; } void swap(int *a,int *b) { int t; t=*a; *a=*b; *b=t; } 运行结果:(需要截图) 运行结果分析: 输入两个整型数给变量a,b,指针p指向整型变量c,调用函数sum,把实参中的a,b传给形参a和b,实参p和形参c指向同一个变量,把a,b之和赋给p所指的变量c。然后调用swap函数使变量a和b的值交换。 5、任务名称 源代码: #include int table[10]; void lookup(int *t,int *a,int n) { int k; *a=t[0]; for(k=1;kt[k]) *a=t[k]; } void main() { int k,min,*p=&min; for (k=0;k<10;k++) scanf(\"%d\lookup( table , p ,10); printf(\"min=%d\\n\} 运行结果:(需要截图)运行结果分析:函数lookup的功能是找到数组t中的最小值并把他赋给指针变量a所指向的变量。在主函数中输入是个整数到数组table[10],调用lookup函数找到最小值,然后输出最小值。 6、任务名称 源代码: #include void main() { int a[5][5]={0},*p[5],i,j; for(i=0;i<5;i++) p[i]= (1) ; for(i=0;i<5;i++) { *(p[i]+ (2) )=1; *(p[i]+5- (3) )=1; } for(i=0;i<5;i++) { for(j=0;j<5;j++) printf(\"%2d\ (4) ; } } (1) A.&a[i][0] B.&a[i][1] C.&p[i] D.&a[0][i] (2) A.0 B.1 C.i D.(i+1) (3) A.0 B.1 C.i D.(i+1) (4) A.putchar(\"\\n\"); B. putchar('\\n'); C. putchar(\\n); D.printf('\\n'); 答:A,C,D,B 运行结果:(需要截图) 运行结果分析:首先要清楚二维数组与指针的结合运用时,注意指针所指向的是数组的第一个元素的地址;其次要注意数组指针的概念和使用,弄清楚指针指向的是什么,也要清楚指针使用时的规则。 7、任务名称 源代码:#include void main() { void fun(int *,int *,int ); int a[5]={4,6,8,10,12},s=1,*p=&s; fun(a,p,5); printf(\"%d\\n\} void fun(int *a,int *s,int n) { int i; for (i=0;i