返回:贺老师课程教学链接
请分析下面程序的输出结果,对照在计算机上的运行结果,解释得到输出的过程。
建议:通过在纸上画出内存变化的过程,洞悉计算机执行的过程。
(1)
#include<stdio.h> void fun(int x,int y,int *z) { *z=x*x+y*y; } int main() { int a=31; fun(5,2, &a); printf("%d\n",a); return 0; }
(2)
#include<stdio.h> void fun(int *a, int *b, int *c) { int *temp; temp=a; a=b; b=temp; *temp=*b; *b=*c; *c=*temp; } int main() { int a,b,c,*p1,*p2,*p3; a=5; b=7; c=3; p1=&a; p2=&b; p3=&c; fun(p1,p2,p3); printf("%d,%d,%d\n",a,b,c); return 0; }
(3)
#include<stdio.h> void exchange(int *,int *,int *); void myswap(int *,int *); int main( ) { int a,b,c; scanf("%d %d %d", &a, &b, &c); exchange(&a,&b,&c); //另一种调用方法 printf("%d %d %d\n", a, b, c); return 0; } void exchange(int *q1,int *q2,int *q3) { if(*q1<*q2) myswap(q1,q2); if(*q1<*q3) myswap(q1,q3); if(*q2<*q3) myswap(q2,q3); } void myswap(int *pt1, int *pt2) { int temp; temp=*pt1; *pt1=*pt2; *pt2=temp; }