辣的果丶 发表于 2016-8-24 18:54:18

为什么传址和传值后,打印出来的的都是3,5?

#include <stdio.h>

void fun( int *a,int *b)
{
int *c; c=a;a=b;b=c;
}
main()
{
int x=3, y=5, *p=&x, *q=&y ;
fun(p,q); printf("%d,%d,",*p,*q);
fun(&x,&y); printf("%d,%d\n",*p,*q);
}

第二个传址,打印出来的不应该是5,3 吗?

mdgsf 发表于 2016-8-24 19:15:06

在fun函数中,你交换的是指针,而不是指针的值,要写成这样void fun( int *a,int *b)
{
int c; c=*a;*a=*b;*b=c;
}

川本姨夫 发表于 2016-8-24 23:33:07

你在逗我,栈上交换一下有啥意思
页: [1]
查看完整版本: 为什么传址和传值后,打印出来的的都是3,5?