2014-12-23 34 views
-5
#include <stdio.h> 
int ABC(int &n) // Error=> expected ')' 
{ 
    printf("n="); 
    scanf("%d",&n); 
} 

請幫幫我!謝謝:)<Error><main.c> in simple program

+1

什麼是你想怎麼辦? – Mansuro

+0

C沒有C++風格的引用......如果你正在做引用傳遞,請使用指針。 – Dmitri

+0

你應該更具體,在你的問題。 – SVN

回答

1

你是無法得到的參數爲使用符號(&)地址。因此,您可以使用指針 來獲取一個變量的地址。

int ABC(int *n) 
{ 
    scanf("%d",n); 
} 

在傳遞到該函數時,必須傳遞變量的地址。

int a; 
ABC(&a); 
0

&address of運算符,它不能作爲參數傳遞給函數。

如果你想修復你的代碼,你需要傳遞參數n沒有&

#include <stdio.h> 
int ABC(int n) 
{ 
    printf("n="); 
    scanf("%d",&n); 
} 
2

看看到C-FAQ的Question 4.11

Q:是否Ç連有``通過引用傳遞''?

A:不是。

嚴格地說,C總是使用價值傳遞。你可以通過引用自己來模擬通過 ,通過定義接受指針的函數,然後在調用時使用&運算符,編譯器將 基本上爲你模擬,當你將一個數組傳遞給函數 (通過傳遞一個指針,見問題6.4等)。

看它的另一種方式是,如果一個參數具有類型,比方說, INT *然後整數正在被引用傳遞和一個指向 整數正在由值來傳遞。基本上,C沒有任何東西真正等價於 引用或C++引用參數的正式傳遞。 (在另一方面, 函數樣預處理宏可以提供的一個``形式通過 名「」通過。)

參見問題4.8,7.9,12.27和20.1。

要通過模擬參考一通:它使用&

int ABC(int *n) 
{ 
    printf("n="); 
    scanf("%d", n); 
    printf("%d\n", *n); 
    return 0; 
} 

電話:

int x; 
ABC(&x); 
0

相同的代碼我在C++試過它的工作只是返回一個值,並看到了希望,這可能給你一個想法

int ABC(int &n) 
{ 
    printf("n=") 
    scanf_s("%d",&n); 
    return n; 
} 
+1

問題標記爲「C」和「xcode」,而「scanf_s」特定於Microsoft編譯器。 –