C99 中的引用传递
我刚刚读了这个:
在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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
那个页面是错误的。 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.