各位懂C语言的进,简单指针问题。

来源:百度知道 编辑:UC知道 时间:2024/06/05 08:30:52
void swap(x,y)
int *x,*y;
{int *tem;
printf("x=%d,y=%d\n",x,y);
printf("x=%d,y=%d\n",*x,*y);
tem=x;
x=y;
y=tem;
printf("x=%d,y=%d\n",*x,*y);
printf("x=%d,y=%d\n",x,y);
}
main()
{int a=1000,b=20,*p1,*p2;
p1=&a;
p2=&b;
printf("---------->\n");
printf("1.a_add=%d,a_value=%d\n",&a,a);
printf("1.b_ade=%d,a_value=%d\n",&b,b);
printf("p1->addr=%d\n",p1);
printf("p2->addr=%d\n",p2);
swap(&a,&b);
printf("2.a_add=%x,a_value=%d\n",&a,a);
printf("2.b_add=%x,a_value=%d\n",&b,b);

printf("p1->addr=%d,*p1=%d\n",p1,*p1);
printf("p2->addr=%d,*p2=%d\n",p2,*p2);
swap(p1,p2);
printf("p1->addr=%d,*p1=%d\n",p1,*p1);
printf("p2->ad

有问题吗?请指明!

*****************************
回网友“乐百哥”,这是传统C中的写法,严格说来,并无错,只是现在不这样写了。

swap()后,*p1和*p2值互换。

swap(&a,&b);
之后,a,b的值第一次互换。

swap(p1,p2);
之后,*p1,*p2的值互换,由于p1,p2分别指向a,b,所以相当于再次互换a,b的换。

void swap(x,y)
int *x,*y;
{int *tem;
printf("x=%d,y=%d\n",x,y);
printf("x=%d,y=%d\n",*x,*y);
tem=x;
x=y;
y=tem;
printf("x=%d,y=%d\n",*x,*y);
printf("x=%d,y=%d\n",x,y);
}

这个写法 有问题 ,我估计的要的是
void swap(int *x,int *y)
{
int *tem;
printf("x=%d,y=%d\n",x,y);
printf("x=%d,y=%d\n",*x,*y);
tem=x;
x=y;
y=tem;
printf("x=%d,y=%d\n",*x,*y);
printf("x=%d,y=%d\n",x,y);
}

swap(&a,&b);
void swap(x,y)
你如果想返回值 那么就不能用VOID 还有 你的A B 是抵制型 那你的XY 也得是地址型!