如何检查参数是否传递给C中的函数?

时间:2016-11-09 02:51:42

标签: c arguments

我不知道如果填写句子“如果传递了initial_value”。 我必须使用变量参数吗?它对我来说不太可读,所以我找到了其他方法。

请帮帮我..

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;
}

1 个答案:

答案 0 :(得分: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