2013-05-06 59 views
-6

是否有任何其他方式交换指向交换值的地址?有没有其他方法将交换指针的地址交换为交换值?

以下是一种同样的方法。这里我们不会更改地址上保存的值。

void Change_Address(int *&p, int *&pt) 
{ 
int *pp; 
pp = p; 
p = pt; 
pt= pp; 
} 
int main(void) 
{ 
    int a =3, b = 4, *p, *p1; 
    p = &a; p1 = &b;  
    printf("Values Before interchange %d %d\n", *p, *p1); 
    Change_Address(p, p1); 
    printf("Values after interchange %d %d", *p, *p1);  
    getch();  
    return 0; 
} 
+0

有什么问题吗? – JonesV 2013-05-06 09:19:24

+5

这不是'C',这是'C++'。 'C'中没有引用。 – Rohan 2013-05-06 09:20:31

+0

这不好,不重要,它不是C,它不是问题,它不属于StackOverflow。 – 2013-05-06 09:38:51

回答

2

你的代码使用,这是C++引用在C你将不得不使用指针的指针:

void Change_Address(int **p, int **pt) 
{ 
int *pp; 
pp = *p; 
*p = *pt; 
*pt= pp; 
} 

int main(void) 
{ 
    int a =3, b = 4, *p, *p1; 
    p = &a; p1 = &b;  
    printf("Values Before interchange %d %d\n", *p, *p1); 
    Change_Address(&p, &p1); 
    printf("Values after interchange %d %d", *p, *p1);  
    getch();  
    return 0; 
}