C和C++的区别 02.函数检测
2017-03-21 09:29
791 查看
C和C++在函数方面的区别主要体现在三个方面:函数检测、内联函数和函数重载。
在C语言中
f();表示返回值为int,接受任意参数的函数
f(i);表示返回值和参数都默认为int。
int f(void);表示返回值为int的无参函数
C++中
int f( );和int f(void)具有相同的意义,都表示返回值为int的无参函数
C++更加强调类型,任意的程序元素都必须显示指明类型
但是只有后部分参数可以。如果某个参数是默认参数,则后面的参数都必须是默认参数。
函数检测
C++中所有的变量和函数都必须有类型,C语言中的默认类型在C++中是不合法的。在C语言中
f();表示返回值为int,接受任意参数的函数
f(i);表示返回值和参数都默认为int。
int f(void);表示返回值为int的无参函数
C++中
int f( );和int f(void)具有相同的意义,都表示返回值为int的无参函数
C++更加强调类型,任意的程序元素都必须显示指明类型
//C语言中 #include <stdio.h> f(i)//默认参数类型为int { printf("i = %d\n", i); } g()//默认返回值为int { return 5; } int main(int argc, char *argv[]) { f(10); printf("g() = %d\n", g(1, 2, 3, 4, 5)); getchar(); return 0; }
默认参数和占位符
//C++中如果函数定义时设置了默认值,而调用时没有提供值,系统则会根据默认值初始化实参。 void Func(int i = 1, float f = 2.0f, double d = 3.0) { cout << i << ", " << f << ", " << d << endl ; } int main(void) { Func() ; // 1, 2, 3 Func(10) ; // 10, 2, 3 Func(10, 20.0f) ; // 10, 20, 3 Func(10, 20.0f, 30.0) ; // 10, 20, 30return 0 ; }
但是只有后部分参数可以。如果某个参数是默认参数,则后面的参数都必须是默认参数。
//下面两种情况都可以 void Func(int i, float f = 2.0f, double d = 3.0) ; void Func(int i, float f, double d = 3.0) ; //但是这样就不可以 void Func(int i, float f = 2.0f, double d) ;
函数占位参数
/* 占位参数表示只有参数类型,而没有参数名。 一般情况下,在函数体内部无法使用占位参数 */ int func(int a, int b, int ) { return a + b; } int main(int argc, char *argv[]) { //调用的时候还是要当成三个参数,虽然第三个参数没用,但是位置要留着。 printf("func(1, 2, 3) = %d\n", func(1, 2, 3)); // 可以 printf("func(1, 2) = %d\n", func(1, 2)); // 不可以 printf("Press enter to continue ..."); getchar(); return 0; }
/* 可以将占位参数与默认参数结合起来使用。 意义: 为以后程序的扩展留下线索(不常使用) 兼容C语言程序中可能出现的不规范写法 */ //C++可以声明占位符参数,占位符参数一般用于程序扩展和对C代码的兼容 int func(int a, int b, int = 0) //int = 0:默认+占位参数(混搭) { return a + b; } int main(int argc, char *argv[]) { printf("func(10, 20) = %d\n", func(10, 20)); // 可以 func(10, 20, 30);//可以 printf("Press enter to continue ..."); getchar(); return 0; }
相关文章推荐
- C++的 成员函数指针, 静态函数指针,全局函数指针 区别
- C/C++与Java函数重载区别!
- C++中函数指针和函数对象的区别与联系
- 详解C++中的纯虚函数(虚函数区别)&多态性以及实例应用
- mpi 的计时函数 和 C/C++ 的计时函数 有什么区别吗?
- C++中关于两个函数的区别引出的各种C++特性或是机理
- C++点滴:向函数中传递指针和传递指针的引用的区别:
- c++第七周任务-成员函数、友元函数和一般函数的区别
- C++检测两个日期是否是五天以内的函数
- 我的C++成长之路(-) 学习阶段 -02 函数、模板、数组的操作
- C/C++函数参数,传值域传址的区别!!!
- C++ 输入函数 cin>>、cin.getline()和cin.get()区别
- C++中虚函数和非虚函数重载在继承时的区别
- c++ static的作用,以及static对象在类和函数中区别
- C++成员函数重载、覆盖和隐藏的区别
- 对比C++中sizeof与strlen函数的区别
- C++中重载与重写函数区别及虚函数(转载)
- C++输入函数的用法和区别
- c++函数中的 指针参数跟地址参数区别
- c++异常参数传递和普通函数参数传递的区别。