【问题标题】:Is passing pointers to functions similar to calling a function by reference? [duplicate]传递指向函数的指针是否类似于通过引用调用函数? [复制]
【发布时间】:2018-09-15 06:25:30
【问题描述】:

在传递指向函数的指针和通过引用调用函数时,我真的看不出有什么区别。我说的对吗

#include <stdio.h>

int multi;

int multiplication(int *a, int *b){
    multi = (*a) * (*b);

    return multi;
}

int main()
{
    int X = 2, Y=3;
    multiplication(&X, &Y);

    printf("%d", multi);
    return 0;
}

【问题讨论】:

  • 你在比较什么?我只看到一个函数。
  • calling by reference 是什么意思?将指针传递给指针?对于您的示例,您不能将新指针分配给 ab。你问的是这个吗?
  • 在乘法函数中我使用指针传递参数,然后使用引用调用函数,这样说对吗?
  • 您的意思是通过引用调用函数还是通过引用传递参数?通过引用调用函数将涉及 C 中的 function pointer,其中“引用”通常使用指针实现。
  • 如果您查看旧的 C 书籍,尤其是 2003 年之前的书籍,他们可能会通过非常类似于您所展示的示例来讨论“通过引用传递”。他们不会为此道歉。如今,如果您说这是“通过引用传递”,那么在 C++ 和 Java 时代长大的人会权威地说您很不了解,不,这不是通过引用传递,而是“模拟”通过引用传递。但是有一天,即使是博学多才、受人尊敬的程序员也会说这是“通过引用传递”。

标签: c


【解决方案1】:

从您展示的示例代码中,您显然是指按引用传递,而不是按引用调用

C 中没有通过引用传递,它总是按值传递。当然,你可以通过传递一个指向某事物的指针来获得按引用传递的效果。指针是您的参考。它再次按值传递,但您使用该值来访问其他对象。

具有 通过引用传递的语言通常会使用指针来实现它。

【讨论】:

    猜你喜欢
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    相关资源
    最近更新 更多