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

lef*_*ick 3 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;
}
Run Code Online (Sandbox Code Playgroud)

Cub*_*257 5

在C(和C++)中调用没有参数的函数将导致编译时错误.因此,如果没有参数,则无法调用该函数.

我认为你要找的是默认参数,这是一个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
Run Code Online (Sandbox Code Playgroud)

边注:

scanf("%d", &number); -> scanf("%d", number); //because number already is a pointer
Run Code Online (Sandbox Code Playgroud)