当前位置: 代码迷 >> C语言 >> [求助]一个简单指针问题
  详细解决方案

[求助]一个简单指针问题

热度:93   发布时间:2007-11-07 14:03:09.0
[求助]一个简单指针问题
帮忙解释一下两个程序的不同:
第一个:
#include<stdio.h>
void main()
{
void swap(int *x,int *y);
int a,b;
int *x;int *y;
scanf("%d,%d",&a,&b);
x=&a;y=&b;
if(a<b)
swap(x,y);
printf("\n%d,%d\n",a,b);
getch();
}
void swap(int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
第二个:将上面main函数调用swap函数中的参数改为(*x,*y);
如果输入1,2,第一个结果为2,1;第二个为1,2;为什么谢谢各位!!
搜索更多相关的解决方案: 指针  

----------------解决方案--------------------------------------------------------
当然不对了,x y本来就是指针,你对指针进行解引用干什么
----------------解决方案--------------------------------------------------------
main函数调用swap函数中的参数改为(*x,*y),相应的swap的函数则要声明为void swap(int,int)。
这里传递进去的是整型变量的数值,而不是指针,这个论坛里关于这类似的帖子,楼主可以翻翻看

----------------解决方案--------------------------------------------------------

LS正解,前几天就有过这样的帖子


----------------解决方案--------------------------------------------------------

重复引用了……


----------------解决方案--------------------------------------------------------
你要传递的是数值,还是地址?
----------------解决方案--------------------------------------------------------
回LZ:

帮忙解释一下两个程序的不同:
第一个:
#include<stdio.h>
void main()
{
void swap(int *x,int *y);
int a,b;
int *x;int *y;
scanf("%d,%d",&a,&b);
x=&a;y=&b;
if(a<b)
swap(x,y);
printf("\n%d,%d\n",a,b);
getch();
}
void swap(int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
第二个:将上面main函数调用swap函数中的参数改为(*x,*y);
如果输入1,2,第一个结果为2,1;第二个为1,2;为什么谢谢各位!!


这个问题比较弱智哦
C++的函数的参数传递有两种:传值法,引用法
若需要在函数体内部修改参数的值,应采用引用法
否则函数体内部修改的是实参的复制值,而非实参本身。

请详细阅读关于函数参数传递的相关内容。
----------------解决方案--------------------------------------------------------
我明白了,是形参和实参的传递问题.谢谢各位了!!

[此贴子已经被作者于2007-11-8 8:35:27编辑过]



----------------解决方案--------------------------------------------------------
恩.
看懂了吧,

----------------解决方案--------------------------------------------------------
  相关解决方案