在C ++中的主题函数下,按值调用,按地址调用和按引用调用之间有什么区别?


回答 1:

按值致电:

在按值调用中,原始值无法更改。当您将值传递给函数时,它由函数参数本地存储在堆栈存储器位置中。如果更改函数参数的值,则仅对当前函数进行更改,并且在当前函数之外将不起作用,并且不会更改调用方函数内部的变量值。

#include 
使用名称空间std;

无效swap_numbers(int a,int b)
{
温度
temp = a;
a = b;
b =温度;
}

int main()
{
整数a = 1111,b = 0000;
交换(a,b); //传递值。
cout <<“ a的值:” << a <<“ b的值:” << b;
}

通过参考致电:

按引用调用方法将参数的引用(地址)复制到参数。在函数内部,引用用于访问调用中使用的实际参数。这意味着如果参数更改,函数外部的值也会随之更改,因为实际和形式参数都共享内存中的相同地址空间。

#include 
使用名称空间std;

void swap_numbers(int * a,int * b)//指针
{
温度
temp = * a;
* a = * b;
* b =温度;
}

int main()
{
整数a = 1111,b = 0000;
swap(&a,&b); //传递引用(地址)。
cout <<“ a的值:” << a <<“ b的值:” << b;
}

回答 2:

我将编写每个函数的原型

1)

int fun(int a,int b)

{

//按值调用

在这里,函数参数复制到临时值a,b中;

//您不能交换原始数据,或对该数据进行任何操作(a,b)都会

不会反映到原始数据

}

int fun(int&a,int&b)

{

//通过引用调用

//在这里,您直接以不同的名称传递变量,所有更改

在数据a,b上将被反映回主变量

}

int fun(int * p1,int * p2)

{

//按地址致电

在这里,您传递的是地址的地址,而不是您可以访问的变量

使用* p1的变量

}


回答 3:

在按值调用中,我们将该值作为参数传递给函数,而在按引用调用中,我们将该值的地址作为参数传递给函数。

举报电话示例:-

void swap(int * a,int * b);

无效main()

{

整数x,y;

cout <<“输入要交换的号码\ n”;

cin >> x >> y;

swap(&x,&y);

getch();

}

无效交换(int * a,int * b)

{

温度

temp = * a;

* a = * b;

* b =温度;

cout << * a << * b;

}

通过值调用的示例:-

void swap(int a,int b);

无效main()

{

整数x,y;

cout <<“输入要交换的号码\ n”;

cin >> x >> y;

swap(x,y);

getch();

}

无效交换(int * a,int * b)

{

温度

temp = a;

a = b;

b =温度;

cout << a << b;

}