存在:
1:单向传送,形参改变不能使实参跟随改变
2:改变,直接交换a,b,所以无论是啊,还是*p,输出的都一样,全部改变
3:没有用新定义函数,直接交换,答案中e,f值不变,其指针值改变
#include<stdio.h>
int main() {
void swap(int* p1, int* p2);
void chan(int* p3, int* p4);
int a = 5, b = 9;
int c = 5, d = 9;
int e = 5, f = 9;
int* pointer1, * pointer2, *pointer3, *pointer4,* pointer5, * pointer6,*p;
pointer1 = &a;
pointer2 = &b;
pointer3 = &c;
pointer4 = &d;
pointer5 = &e;
pointer6 = &f;
swap(pointer1, pointer2);
chan(pointer3, pointer4);
printf("a=%d,b=%d\n", a, b);
printf("a=%zd,b=%zd\n",pointer1, pointer2);
printf("a=%d,b=%d\n\n", *pointer1, *pointer2);
printf("c=%d,d=%d\n", c, d);
printf("a=%zd,b=%d\n", pointer3, pointer4);
printf("c=%d,d=%d\n\n", *pointer3, *pointer4);
p = pointer5; pointer5 = pointer6; pointer6 = p;
printf("e=%d,f=%d\n", e, f);
printf("a=%d,b=%d\n", pointer5, pointer6);
printf("e=%d,f=%d\n", *pointer5, *pointer6);
return 0;
}
void swap(int* p1, int* p2)
{
int* p;
p = p1;
p1 = p2;
p2 = p;
}
void chan(int* p3, int* p4)
{
int temp;
temp = *p3;
*p3 = *p4;
*p4 = temp;
}
随后运行结果是封面