C语言中的默认参数

C语言中的默认参数,c,parameters,default,C,Parameters,Default,是否可以在C中设置默认参数的值?例如: void display(int a, int b=10){ //do something } main(){ display(1); display(1,2); // override default value } VisualStudio2008,投诉无效显示中存在语法错误(intA,intB=10)。如果这在C语言中是不合法的,那么还有什么选择呢?请让我知道。谢谢。C中没有默认参数 一种方法是传入NULL指针,然后在传入NULL时将值设

是否可以在C中设置默认参数的值?例如:

void display(int a, int b=10){
//do something
}

main(){
  display(1);
  display(1,2); // override default value
}

VisualStudio2008,投诉无效显示中存在语法错误(intA,intB=10)。如果这在C语言中是不合法的,那么还有什么选择呢?请让我知道。谢谢。

C中没有默认参数

一种方法是传入NULL指针,然后在传入NULL时将值设置为默认值。但这很危险,所以我不建议使用它,除非您确实需要默认参数

范例

function ( char *path)
{
    FILE *outHandle;

    if (path==NULL){
        outHandle=fopen("DummyFile","w");
    }else
    {
        outHandle=fopen(path,"w");
    }

}

这在标准C中是不可能的。一种替代方法是将参数编码到函数名中,例如

void display(int a){
    display_with_b(a, 10);
}

void display_with_b(int a, int b){
    //do something
}

默认参数是C++特性。 C没有默认参数。

不是这样


您可以使用int数组或varargs来填充函数中缺少的数据。不过,您会丢失编译时检查。

事实上,这在C语言中是不合法的。C语言也没有重载。可能重复:可能重复+1。我也喜欢评论中的做法,其中函数的名称包括它所使用的参数的数量。