按地址调用和按引用调用有什么区别

目录:

Anonim

主要区别 Call By Address 和 Call By Reference 之间是 在按地址调用中,参数的地址复制到函数的形参,而在按引用调用中,参数的引用复制到函数的形参。

通常,函数是一组允许多次执行任务的语句。函数有助于使程序更具可读性。在C++等编程语言中,执行从main方法开始,可以从main方法调用其他函数或方法。这些语言有各种方法来调用函数。 C++ 中的两个这样的方法是“按地址调用”和“按引用调用”。

C++,按地址调用,按指针调用,按引用调用,函数,指针,引用

什么是按地址呼叫

按地址调用也称为按指针调用。在这种方法中,程序员将实参的地址传递给形参。然后,该函数使用地址来访问实际参数。换句话说,对形式参数所做的更改会影响实际参数。为了通过指针传递值,参数指针被传递给类似于任何其他值的函数。示例程序如下。

图 1:按地址调用的 C++ 程序

主程序中有两个整数:a'和'b'。 “a”和“b”的地址被传递给函数。因此,该函数获取这些地址。而且,临时变量有助于交换两个值。然后,该函数使用地址对实际值进行操作。因此,我们可以观察到函数内部所做的更改在主程序中是可见的。最后,我们可以看到两个值交换了。现在‘a’有20个,‘b’有10个。

什么是引用调用

在了解通过引用调用的概念之前,了解引用变量的概念很重要。假设下面的代码。

int a = 10;

int &b= a;

这里,b 是参考变量。这些变量本身不占用任何内存空间。因此,它共享已分配变量的内存。换句话说,b 共享 a 的内存。当程序员改变实际变量时,引用变量也会改变。如果程序员更改了 a,它会反映在 b 中,如果他更改了 b,那么 a 将使用 b 的新值。同样,引用变量有助于节省内存。

在按引用调用中,参数的引用复制到形式参数。在函数内部,程序员可以使用引用来访问实际参数。因此,对参数所做的更改会影响实际参数。此外,为了通过引用传递值,参数引用就像任何其他值一样传递给函数。

图 2:通过引用调用的 C++ 程序

在主程序中,主程序中有两个整数:‘a’和‘b’。这两个值被传递给交换函数。在交换函数中,p 和 q 是形式参数。 &p 和 &q 表示它们是引用变量。然后交换函数对值进行更改。最后,交换的值显示在控制台上。

按地址调用和按引用调用之间的区别

定义

Call By Address 是一种调用函数的方法,在该函数中,实际参数的地址被复制到形式参数中。但是,按引用调用是一种通过将参数的引用复制到形式参数中来将参数传递给函数的方法。因此,这是按地址调用和按引用调用之间的区别。

功能

内存分配

此外,在按地址调用中,为实参和形式参数分配内存,而在按引用调用中,仅为实参分配内存,形式参数共享该内存。

结论

简而言之,按地址调用和按引用调用是将值传递给函数的两种方法。 Call By Address和Call By Reference的主要区别在于,在按地址调用中,参数的地址复制到函数的形参,而在按引用调用中,参数的引用复制到形参的功能。

参考:

1.古普塔,桑杰。 07 C Call By Value、Call by Address 和 Call by Reference Methods of Function Call,YouTube,2017 年 1 月 3 日,可在此处获取。 2.Tutorialspoint.com。 “通过指针调用 C 函数。” www.tutorialspoint.com,可在此处获得。 3.Tutorialspoint.com。 “通过引用调用 C 函数”。 www.tutorialspoint.com,可在此处获得。

按地址调用和按引用调用有什么区别