C中的默认参数

时间:2012-02-07 23:07:43

标签: c parameters default

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

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

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

Visual Studio 2008,抱怨-void显示语法错误(int a,int b = 10)。如果这在C中不合法,那么替代方案是什么?请告诉我。感谢。

5 个答案:

答案 0 :(得分:49)

默认参数是C ++功能。

C没有默认参数。

答案 1 :(得分:13)

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

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

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

答案 2 :(得分:5)

C中没有默认参数。

这样做的一种方法是传入NULL指针,然后在传递NULL时将值设置为默认值。这很危险,所以除非你真的需要默认参数,否则我不推荐它。

实施例

function ( char *path)
{
    FILE *outHandle;

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

}

答案 3 :(得分:2)

不那样......

您可以使用int数组或varargs并填写函数中缺少的数据。但是你会丢失编译时检查。

答案 4 :(得分:-1)

我的坏。遮篷非常错误。已删除。