首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

参数的传递解决办法

2012-06-03 
参数的传递定义一个函数:void swap(int *p,int *q){int temptemp *p*p *q*q temp}然后调用的时

参数的传递
定义一个函数:
void swap(int *p,int *q)
{
  int temp;
  temp = *p;
  *p = *q;
  *q = temp;
}
然后调用的时候:
int i = 2,j = 3;
swap(i,j)与swap(&i,&j)哪个更好一点呢,效率更好.


[解决办法]
什么意思??你不就是定义一个函数吗?为什么要出现两种调用?按照你的定义,只能调用swap(&i,&j)。另外一个是非法的。不过VS编译器已经提供了swap,最好自己定义的函数还是改个名字吧。
[解决办法]
#include<stdio.h>

void swap(int *p,int *q)
{
int temp;
temp = *p;
*p = *q;
*q = temp;
};

int main()
{
int i=1,j=3;
swap(&i,&j);
printf("%d\n%d\n",i,j);
return 0;
}

[解决办法]
#include<stdio.h>

void swap(int *p,int *q)
{
int temp;
temp = *p;
*p = *q;
*q = temp;
};

int main()
{
int i=1,j=3;
swap(&i,&j);
printf("%d\n%d\n",i,j);
return 0;
}

[解决办法]

C/C++ code
#include<stdio.h>void swap(int *p,int *q)//形参是指针变量p,q,不是*p,*q,应该传地址进来{  int temp;  temp = *p;  *p = *q;  *q = temp;};int main(){int i=1,j=3;swap(&i,&j);//vs2008表示这个是正确的,printf("%d\n%d\n",i,j);return 0;}
[解决办法]
1楼的意思是,编译器里面已经提供了 swap的函数,所以你可以用swap(i,j)
你换一个名字 把函数名改成 jiaohuan() 然后分别调用jiaohuan(i,j)和jiaohuan(&i,&j);


探讨

引用:

什么意思??你不就是定义一个函数吗?为什么要出现两种调用?按照你的定义,只能调用swap(&amp;amp;i,&amp;amp;j)。另外一个是非法的。不过VS编译器已经提供了swap,最好自己定义的函数还是改个名字吧。

我用dev c++ 编译swap(i,j)结果也是正确的交换.

热点排行