资源描述:
《实验8 指针及其应用.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验八指针及其应用【实验目的】1.理解指针概念、求变量地址和指针寻址操作,掌握指针的各种运算方法。2.掌握指针作为函数参数,实现函数与被调用函数之间数据传递的方法。3.理解指针与数组的关系,掌握运用指针访问数组元素的方法。4.理解指针与字符串的关系,掌握运用指针处理字符串的方法。【实验内容】一、读程序,运行程序,解释程序结果。程序1:#includemain(){intx,y,*pt1,*pt2,t1,t2,t3;x=8;y=4;pt1=&x;pt2=&y;t1=*pt1**pt2-11;t2=3*-*pt2+*pt1+5;printf("Addressof
2、x=%u",pt1);printf("Addressofy=%u",pt2);printf("");printf("x=%d,y=%d",x,y);printf("t1=%d,t2=%d",t1,t2);*pt1=*pt2+7;*pt2=*pt1-6;t3=*pt1**pt2+3;printf("");printf("x=%d,y=%d",x,y);printf("t3=%d",t3);}程序2:#includemain(){int*pt,tot=0,i;intx[5]={6,7,8,9,10};i=0;pt=x;printf
3、("ElementValueAddress");while(i<5){printf("x[%d]%d%u",i,*pt,pt);tot=tot+*pt;i++;pt++;}printf("Total=%d",tot);printf("&x[0]=%u",&x[0]);printf("&x=%u",&x);printf("x=%u",x);printf("pt=%u",pt);}程序3:#includevoidswap1(intx,inty){intt;printf("swap1:");printf("x
4、的地址=%d,x的地址=%d",&x,&y);printf("swap1交换后:x的值=%d,y的值=%d",x,y);t=x;x=y;y=t;printf("swap1交换后:x的值=%d,y的值=%d",x,y);}voidswap2(int*x,int*y){intt;printf("swap2:");printf("x的地址=%d,x的地址=%d",x,y);printf("swap2交换前:x所指变量的值=%d,y所指变量的值=%d",*x,*y);t=*x;*x=*y;*y=t;printf("swap2交换前:x所指变量的值=%d,y所指
5、变量的值=%d",*x,*y);}voidmain(){inta,b;scanf("%d%d",&a,&b);printf("");printf("a的地址=%d,b的地址=%d",&a,&b);printf("调用swap1前:a的值=%d,b的值=%d",a,b);swap1(a,b);printf("调用swap1后:a的值=%d,b的值=%d",a,b);swap2(&a,&b);printf("调用swap2后:a的值=%d,b的值=%d",a,b);}二、修改程序中的错误,并解释。对于教材中的例9.1,编写如下程序:程序1:#include
6、char*a;char*b;char*c;charx,y,z;voidassp(char*p,charpref);intmain(){charprefa,prefb,prefc;printf("pleaseinputA,B,C'sprefer:");scanf("%c%c%c",&prefa,&prefb,&prefc);getchar();assp(a,prefa);assp(b,prefb);assp(c,prefc);printf("pleaseinputfemaleX,Y,Z'sprefer:");scanf("%c%c%c",&x,&y,&
7、z);if(*a=='a')printf("Aislucky!");if(*b=='b')printf("Bislucky!");if(*c=='c')printf("Cislucky!");return0;}voidassp(char*p,charpref){switch(pref){case'x':p=&x;break;case'y':p=&y;break;case'z':p=&z;break;}}程序2:#includechar*a,*b,*c;char*x,*y,*