2012-10-27 113 views
2

我試圖使主要功能簡短。我需要回答一些問題(在每個問題中有很多代碼行,我需要使用主要聲明的變量) 但是,使用函數,我知道如何使用的方式不會有用,因爲我需要在每個問題中使用很多變量,不同類型,而不是數組。 對不起,我很難解釋我需要什麼。功能範圍爲C

這是我的代碼與僞混合(簡化的)

int 
main(void) 
{ 
    int x = 4; 
    int y = 5; 
    float z = 6.8; // And lot of more variables like this 

    answer_1; //pseudocode 
    answer_2: 

    return 0; 
} 

//內部ANSWER1有很多的printf的的表示變量x,Y,Z ....等)

的值//在answer1中有很多printf顯示變量t,i,l ....的值)

+1

「我需要一個函數內部使用Main中聲明的變量。」 - 等等,這不正是什麼函數參數? – 2012-10-27 15:48:20

+0

什麼是*縮短主*? – pmod

+1

把''static int x = 4;'帶到main的主體之外。至少這樣,它們的可見性僅限於當前的編譯單元(文件),而不是在整個項目中可見的全局變量。然而,即使使用靜態變量,一個比'x'更具說服力的變量名也可能是一個好主意。 – fvu

回答

1

隨着您發佈的代碼示例,傳入x的最佳方式是作爲功能。

void func(int x); 

int main(void) 
{ 
    int x = 4; 
    func(x); 
    return 0; 
} 

void func(int x) 
{ 
    printf("X = %d", x); 
} 

如果這不會在你的真實代碼中工作,你可以發佈一個更長的例子嗎?

+0

好吧,但如果有20個變量可以通過,不同的類型,而不是數組。我想要做的是調用一個函數(在我的例子中)爲需求列表中的每個答案。只是爲了讓我的代碼更易於讀懂我的老師。 – jotape

+2

如果你有很多狀態想要傳遞給不同的函數,我建議將這些值邏輯地分組到[結構](http://en.wikipedia.org/wiki/Struct_(C_programming_language)) ,或指向結構的指針。變量之間是否存在邏輯組?例如,fooA,fooB,fooC,都可以存儲在一個結構foo中,成員a,b,c。 – Douglas

+1

另外,如果你有20個參數,那麼你可能需要把事情分解成多個函數。如上所述,封裝綜合狀態的結構方法也是可取的。 – Joe

0

如果你不想這些變量傳遞給函數,你可以

+2

致OP:不要這樣做。沒有人以這種方式寫C,理由很充分。按照預期的方式使用參數。 – Joe

+1

值得指出的是,全局變量(包括靜態和導出)通常是一種不好的做法,如果它們被用來代替函數參數,那麼它是非常可怕的。這就像在OOP語言中使用單例傳遞方法參數一樣... – hyde

+0

@Joe我正在學習;也許在我的例子中使用函數不是我所需要的。我會改變這個問題,這樣它就可以理解我的意圖 – jotape

0

嘗試使用「功能的其他函數中」

功能主要包含兩個其他功能。 先定義變量然後寫入函數體。