C++函数的传值调用,将两个数交换
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/16 20:11:07
C++函数的传值调用,将两个数交换
我写的程序如下:
但运行后的结果是 x=7 y=11
两个数并没有交换位置
#include
using namespace std;
void swap(int &a,int &b)
{int t;
t=a;a=b;b=t;
}
void main()
{int x=5,y=6;
swap(x,y);
cout
我写的程序如下:
但运行后的结果是 x=7 y=11
两个数并没有交换位置
#include
using namespace std;
void swap(int &a,int &b)
{int t;
t=a;a=b;b=t;
}
void main()
{int x=5,y=6;
swap(x,y);
cout
问:但为什么倒数第二行的swap(x,y);不改为swap(&x,&y);与调用函数对应呢
答:比如一个函数定义为void func(a); 那我们可以这样调用 void func(b)对吧?实际上函数在堆栈上创建了一个临时的变量a 在函数入口处实际上相当与执行了 a=b;这样一条f赋值语句,因为创建了临时变量 所以这也是为什么你一开始两个数没有交换的原因 因为他们交换的是临时变量 函数结束后变量就没有了
如果一个函数定义为void func(int & a);调用的时候可以这样写void func(b)
同样执行了 一个int &b = a;这样的一条语句 所以不会错的 定义了一个引用变量b 引用的是a的值 所以swap就成功交换了 如果调用的时候写成void func(&b) 这个时候相当于 a = &b;也就是传给a的是b的地址 这种情况对应于函数参数是指针的情况 如 void func(int *p)明白了吗?显示错误 我就不知道怎么回事了
答:比如一个函数定义为void func(a); 那我们可以这样调用 void func(b)对吧?实际上函数在堆栈上创建了一个临时的变量a 在函数入口处实际上相当与执行了 a=b;这样一条f赋值语句,因为创建了临时变量 所以这也是为什么你一开始两个数没有交换的原因 因为他们交换的是临时变量 函数结束后变量就没有了
如果一个函数定义为void func(int & a);调用的时候可以这样写void func(b)
同样执行了 一个int &b = a;这样的一条语句 所以不会错的 定义了一个引用变量b 引用的是a的值 所以swap就成功交换了 如果调用的时候写成void func(&b) 这个时候相当于 a = &b;也就是传给a的是b的地址 这种情况对应于函数参数是指针的情况 如 void func(int *p)明白了吗?显示错误 我就不知道怎么回事了
C++函数的传值调用,将两个数交换
编写交换两个变量值的函数,并调用该函数交换主函数中两个变量的值
C语言中函数调用,为什么交换了地址,可是所指的值还是不变那?
谁会用C语言 写“定义函数返回两个数中较大的数,在主函数中调用并输出.编写主函数调用该函数”.
主调函数中的两个变量a和b,要求调用函数交换a,b值,返回交换结果,则以下正确的函数是()
请设计两个子函数,第一个函数实现两个数的交换,第二个函数求两个数的最大值,并返回.主函数要求从屏幕输入两个数,然后调用第
一个C语言题,调用一个函数利用这个函数比较所输入的两个数大小,输出较小的值,如果两数相等输出相等!
主函数中两个变量a和b,需调用函数交换a和b值,返回交换结果
c语言交换两个数的问题?
C语言程序,要求两个数通过函数调用比较两个数的大小,并把大数返回给主调函数,输出这个数.
c语言程序设计 定义一个函数求两个数的最大值,在住函数中调用该函数求三个数的最大值并输出.
1、定义个带参数的宏,使两个参数的值交换,并写出程序,输入两个数作为调用宏时的参数,输出交换后的两个