t a = 0, int b, int c = 1)
{
return a + b + c;
}
int main()
{
printf ("func() = %d",func(1));
}
程序无法编译通过。
#include
int func(int a , int b, int c = 1)
{
return a + b + c;
}
int main()
{
printf ("func() = %d",func(1,2));
}
程序打印结果是func()=4
1.占位参数的基本概念
占位参数只有参数类型声明,而没有参数名的声明。
一般的情况下,在函数体的内部无法使用占位参数。
#include
int func(int a , int b, int)
{
return a + b;
}
int main()
{
printf ("func() = %d",func(1,2,3));
}
上述程序的打印结果是3,假如我们在调用func()函数的过程中传递的是两个参数,那么程序将不能够编译通过。这就是占位参数的一个重要作用。然而在上述程序中占位参数并没有起到实质性的作用。仅仅是起到了单纯的占位作用。
2.占位参数的意义
占位参数的意义主要有两点,一点是为了以后程序的扩展留下线索,另一点重要作用就是兼容
C语言中不规范的写法。例程:(将占位参数与默认参数结合起来使用!)
#include
int func()
{
return 1;
}
int main(int argc, char *argv[])
{
printf("func() = %d\n", func());
printf("func(1) = %d\n", func(1));
printf("Press enter to continue ...");
getchar();
return 0;
}
在上述程序中,假如原来这个程序来自于C语言的编写,所以两次函数调用都是合法的。但是这样的参数传递在C++中是绝对不合法的,假如我们有大量的这样的代码存在,那么一个工程的修改量将会大大加大。这个时候我们就需要启用占位参数。修改后的程序如下所示:
#include
int func(int = 0)
{
return 1;
}
int main(int argc, char *argv[])
{
printf("func() = %d\n", func());
printf("func(1) = %d\n", func(1));
printf("Press enter to continue ...");
getchar();
return 0;
}