这个指针的问题不太理解?帮我解释一下?
问题我放在程序的注释中了
程序代码:/*利用调用函数交换三个数*/
#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 编辑 ]









