第二次作业——交换两个整形变量的数值
Posted 张文静
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二次作业——交换两个整形变量的数值相关的知识,希望对你有一定的参考价值。
#include<stdio.h> void swap(int *p,int *q) { int i; i=*p;*p=*q;*q=i; } main() { int a=2,b=9,*p,*q; P=&a;q=&b; swap(p,q); printf("a=%d b=%d",a,b); return 0; }
a=9 b=2
--------------------------------
Process exited after 0.0164 seconds with return value 0
请按任意键继续. . .
总结:1:此题只输出 a和b,不输出*p,*q。
2:感觉自己指针还是不会运用,好多知识点还不会,需要查书才能编辑出来。
3:自己打代码的时候太少,不实践,导致打的速度慢,还总是出现小毛病,比如符号错误。
二:void swap(int *p,int *q){int *m;*m=*p;*p=*q;*q=*m;}为何无法实现交换?
1:swap函数中指针变量m并未赋值,即m指向的是内存中的一个未知区域,可能破坏系统的正常工作状况。所以不正确。
2:指针编译时实行值传递,但此次传递的是地址。
三、void swap(int *p,int *q){int *m;m=p;p=q;q=m;}为何无法实现交换?
其采用了把改变值的变量作为参数,是错误的。应该用指针变量作为参数的办法,这样能够实现通过调用函数使变量的值发生变化。
四、构建comp函数,实现两个整数比较,比较大的值通过返回值返回给main。要求comp的参数和返回值都是指针类型数据。
#include<stdio.h> int *comp(int *p,int *q) { return *p>*q? p:q; } int main() { int a,b,*m; scanf("%d%d",&a,&b); m=comp(&a,&b); printf("max=%d\\n",*m); }
5,1
max=5
--------------------------------
Process exited after 6.912 seconds with return value 0
请按任意键继续. . .
1:comp函数较max函数比较简洁迅速
总结:
1,编程时不注意细节,有时忘一些标点等
2,指针有些知识还不理解,通过这次作业查漏补缺了,完善了知识枢纽
3,希望接下来复习以前的例题来更好的进步。
以上是关于第二次作业——交换两个整形变量的数值的主要内容,如果未能解决你的问题,请参考以下文章