2016-11-09 13 views
3

「initial_valueが渡された場合」という文章をどのように記入するのか分かりません。 可変引数を使用する必要がありますか?それは私にはあまり読みにくくないので、私は他の方法を見つけています。引数がCの関数に渡されるかどうかをチェックする方法は?

は、そのパラメータなしfuncitonを呼び出すと、コンパイル時にエラーになります。.. C(および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

私を助けてください。そのため、パラメータがなければ関数を呼び出すことはできません。

あなたが探しているものは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

それはとても理にかなっている、あなたに感謝します回答! –

関連する問題