如何在C语言中检查函数是否传递了参数?

3
我不知道如何填写句子“如果传递了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个回答

6
在C语言(和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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接