C99 中的引用传递

发布于 2024-10-23 15:10:51 字数 668 浏览 1 评论 0原文

我刚刚读了这个

在C++(和C99)中,我们可以绕过 参考,它提供了相同的 作为指针传递的性能。

所以我尝试了这个简单的代码:

#include <stdio.h>

void blabla(int& x){
    x = 5;
}

int main(){
    int y = 3;
    printf("y = %d\n", y);
    blabla(y);
    printf("y = %d\n", y);
}

输出是:

gcc test.c -o test -std=c99
test.c:3:16: error: expected ';', ',' or ')' before '&' token
test.c: In function 'main': 
test.c:10:2: warning: implicit declaration of function 'blabla'

现在我很困惑。 C99 确实支持引用传递吗?

I just read this:

In C++ (and C99), we can pass by
reference, which offers the same
performance as a pointer-pass.

So I tried this simple code:

#include <stdio.h>

void blabla(int& x){
    x = 5;
}

int main(){
    int y = 3;
    printf("y = %d\n", y);
    blabla(y);
    printf("y = %d\n", y);
}

The output was:

gcc test.c -o test -std=c99
test.c:3:16: error: expected ';', ',' or ')' before '&' token
test.c: In function 'main': 
test.c:10:2: warning: implicit declaration of function 'blabla'

Now I'm confused. Is pass by referenced indeed supported by C99?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

这个俗人 2024-10-30 15:10:51

那个页面是错误的。 C 中没有“引用”(甚至在 C99 中)。

在 C 中,当您想要“通过引用”传递时,您可以使用指针来伪造引用语义。

That page is wrong. There are no "references" in C (even in C99).

In C, when you want to pass "by reference," you fake reference semantics using a pointer.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文