2010-01-13 102 views
1

可能重复:
Passing pointer argument by reference under C?参考用C

是参考变量C++的概念?它们在C中可用吗?如果在C中可用,为什么我的代码给出编译错误?

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    int a = 10; 
    int b = 20; 
    int &c = a; 
    int &d = b; 
    return 0; 
} 

输出:

bash-3.2$ gcc test.c 
test.c: In function `main': 
test.c:12: error: parse error before '&' token 

为什么?

+1

您可以通过在每行的前面放置四个空格来将代码格式化为代码。 (我已经在这里为你完成了。) – 2010-01-13 14:57:54

+1

这里是答案:http://stackoverflow.com/questions/1825794/passing-pointer-argument-by-reference-under-c/1825813#1825813 – 2010-01-13 15:06:04

回答

4

传递引用在C中不可用,请改用简单的指针。

2

参考文献仅为C++概念。在C中,你只能使用指针。

6
  1. 它是在C上可用的一个概念++(但不排他)
  2. 不,它不提供标准C.
  3. 参见图1和2参见 * 1和* 2。
+3

应该指向3是“看* 1和* 2”? ;) – Lazarus 2010-01-13 17:04:36

6

你不能用它来声明变量:

int &c = a; 

操作&用于获取变量的内存地址。因此,您可以编写例如:

int a = 10; 
int *c; 
c = &a; 
+0

在C中为true,但C++允许。 – kenny 2010-01-13 20:07:19

11

C没有引用作为类型。 C中的'&'仅用于获取变量的地址。它不能用你在C中试图使用它的方式。

2

它已经有一段时间了,但它看起来像你试图将c的地址分配给a的值。

纠正:a的值到c的地址。 (感谢Chinmay Kanchi指出了这一点。)

+0

不,他正在尝试将a的值赋给c的地址。无论如何,这是完全违法的。 – 2010-01-13 20:08:19