关于指针的菜鸟问题 :)
最具有代表性的指针例子:
#include <stdio.h>
void interchange(int *u, int *v);
int main(void)
{
int x = 5, y = 10;
printf("Originally x = %d and y = %d.\n", x, y);
interchange(&x, &y); /* send addresses to function */
printf("Now x = %d and y = %d.\n", x, y);
return 0;
}
void interchange(int *u, int *v)
{
int temp;
temp = *u; /* temp gets value that u points to */
*u = *v;
*v = temp;
}
按照我的理解
函数应该是 void interchange(int u, int v);
u,v引用变量地址:&x,&y
u=&x,v=&y 然后u v进行交替,也就是x,y的地址交换
这样也就是x y的值交换了?
为什么不是下面的形式,请高手给菜鸟解释下 :)
难道 * 和 & 要成对使用吗?
#include <stdio.h>
void interchange(int u, int v);
int main(void)
{
int x = 5, y = 10;
printf("Originally x = %d and y = %d.\n", x, y);
interchange(&x, &y); /* send addresses to function */
printf("Now x = %d and y = %d.\n", x, y);
return 0;
}
void interchange(int u, int v)
{
int temp;
temp = u;
u = v;
v = temp;
}