C中没有引用调用?

问题描述 投票:0回答:2

我知道,标题有点奇怪。当然,我知道如何在C语言中进行按引用调用。我的问题很简单,解决方案也很简单。我目前正在阅读我大学的一些脚本,他们明确地写“ C中不使用按呼叫引用”

由于我(认为我)知道如何用C进行引用调用,所以我有点困惑,希望您能为我提供帮助。

我通常对“按引用呼叫”一词有什么误解吗?还是下面的代码实际上是通过引用进行调用]

void test(int* p) {
    *p = 5;
}

int main(int argc, char *argv[]) {
    int i = 2;
    test(&i);
    printf("i = %i\n",i);
    end;
}

另一种解释是,按引用调用是一种不好的做法。例如,Java不允许通过引用调用非对象。但是由于C也不是面向对象的,所以对我来说毫无意义(可能还有结构)

或者脚本实际上是错误的吗?

谢谢您!

c pass-by-reference
2个回答
0
投票

与C ++中一样,C中没有变量引用的概念。在小示例中显示的内容仅仅是使用指针(或变量地址)。但是,您传递的是值(变量的地址)而不是引用(变量名的别名)。


0
投票

或者脚本实际上是错误的吗?

您的代码没有错。

此调用test(&i);实际上是通过指针传递的,而不是通过引用传递的。在C语言中,没有关于引用的概念。 &这里是地址运算符,不是参考。

概念传递引用仅适用于C ++,这意味着传递对象本身(而不是传递对象的副本)。即使如此,对test的调用也会有所不同:test(i); // pass-by-reference而不是test(&i); // pass-by-pointer

© www.soinside.com 2019 - 2024. All rights reserved.