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



 
											





 
	    

 
	


