2016-11-09 148 views
3

我不知道如何填寫「如果initial_value通過」。 我必須使用可變參數嗎?它對我來說不是很易讀,所以我找到了其他方法。如何檢查參數是否傳遞給C中的函數?

幫我請..

int *func (int initial_value) { 
    int *number; 

    number = malloc(sizeof(int)); 
    if ("if initial_value is passed") *number = initial_value; 
    else scanf("%d", &number); 

    return number; 
} 

回答

5

在C(和C++),而不調用其參數的功能可按會導致編譯時錯誤。所以如果沒有參數就不能調用該函數。

我認爲你要找的是default arguments,這是一個C++功能。它C.

不提供正常裏用C實現類似的東西,可以通過指針的一種方式:

int * func (int * initial_value) { 
    int x; 
    if(initial_value == NULL) { 
     x = 5; 
    } else { 
     x = *initial_value; 
    } 
    //...more code and return 
} 

//when you call it use: 
func(NULL); // x = 5 
int arg = 7; 
func(&arg); // x = 7 

旁註:

scanf("%d", &number); -> scanf("%d", number); //because number already is a pointer 
+0

它使這麼多的意義,謝謝您回答! –

相關問題