C中的默认参数

use*_*265 35 c parameters default

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

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

main(){
  display(1);
  display(1,2); // override default value
}
Run Code Online (Sandbox Code Playgroud)

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

oua*_*uah 54

默认参数是C++功能.

C没有默认参数.


Jon*_*oni 14

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

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

void display_with_b(int a, int b){
    //do something
}
Run Code Online (Sandbox Code Playgroud)


Rus*_*ssS 5

C中没有默认参数.

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

function ( char *path)
{
    FILE *outHandle;

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

}
Run Code Online (Sandbox Code Playgroud)