第二次作业
#include<stdio.h> int main() { void swap(int *p1,int *p2); int a,b; int *p1,*p2; scanf("%d ,%d",&a,&b); p1=&a; p2=&b; swap(p1,p2); printf("%d,%d",a,b); } void swap(int *p1,int *p2) {int t; t=*p1; *p1=*p2; *p2=t; }
总结:
swap函数需要调用,
a,b需要定义为整形变量,
符号需要使用半角符号。
截图中的注释在插入代码后显示成了乱码,所以我把插入代码时把注释删除了
#include<stdio.h> int main() { int comp(int *p1,int *p2); int a;int b; int *p1;int *p2; scanf("%d,%d",&a,&b); printf("%d\n",comp(&a,&b)); } int comp(int *p1,int *p2) { if(*p1>*p2) return *p1;else return *p2; }
总结;
定义两个整形变量a,b,定义两个指针p1,p2,定义一个comp函数,如果指针p1指向的值大于指针p2指向的值,返回p1,反之返回p2,最后输出调用函数后得到的值
void swap(int *p,int *q){int *m;*m=*p;*p=*q;*q=*m;}为何无法实现交换?
答:*m是指针变量们所指向的变量,但m中并无确定的值,它的值是不可预见的,因此m所指向的单元也是不可预见的,所以对*m的赋值有可能给一个存储着重要数据的存储单元赋值,这样就会破坏系统的正常工作状况,应将*p的值赋给一个整形变量,用整形变量作为临时辅助变量实现*p与*q的交换。
void swap(int *p,int *q){int *m;m=p;p=q;q=m;}为何无法实现交换?
答:此程序只将变量的地址进行了交换,没将变量的值进行交换,所以输出的值与原来相同。