[求助]一个简单指针问题
帮忙解释一下两个程序的不同:第一个:
#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编辑过]
----------------解决方案--------------------------------------------------------
恩.
看懂了吧,
----------------解决方案--------------------------------------------------------