2010-01-13 107 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