这个指针的问题不太理解?帮我解释一下?
问题我放在程序的注释中了程序代码:
/*利用调用函数交换三个数*/ #include <stdio.h> void main() { void exchange(int *q1, int *q2, int *q3); int a , b, c; //输入 12 65 31 三个数 int *p1, *p2, *p3; scanf("%d%d%d", &a, &b, &c); p1 = &a; p2 = &b; p3 = &c; printf("原来:%d %d %d\n", p1, p2, p3);//输出原来p1 p2 p3 的地址 printf("&值%d %d %d\n", &a, &b, &c); printf("变量a b c值%d %d %d\n", a, b, c); exchange(p1, p2, p3); printf("\n交换后:%d %d %d\n", p1, p2, p3); //输出交换后p1 p2 p3 的地址,交换后的指针地址应该不一样啊,可结果和原来一样不理解! ,怎么回事? printf("&值%d %d %d\n", &a, &b, &c); printf("变量a b c值%d %d %d\n", a, b, c); //交换的是指针指向的地址,这三个数顺序应该不变才对,可结果也交换了,不理解!怎么回事? } void exchange(int *q1, int *q2, int *q3) { void swap(int *qt1, int *qt2); if(*q1 < *q2) swap(q1, q2); if(*q1 < *q3) swap(q1, q3); if(*q2 < *q3) swap(q2, q3); } void swap(int *qt1, int *qt2) { int t; t = *qt1; *qt1 = *qt2; *qt2 = t; }
[ 本帖最后由 zpcg 于 2011-8-26 22:33 编辑 ]