C++入门(5):定义个人函数
2015-12-28 15:07
423 查看
C++入门(5):定义个人函数
函数定义函数原型通常安排在main()函数的定义之前;
定义函数时,可以给输入参数设置默认值,让这个参数成为可选的,但有一点必须注意:必须把所有的必选参数放在可选参数之前!!
内联函数
创建内联函数最直接的办法是使用 inline 关键字并在 main() 函数的前面定义它,所以内联函数不需要先为它定义原型;
某个函数被编译器当做内联函数来处理最直接的效果是:这个函数的调用将被替换为实际的函数代码,就像那些代码是写在main()函数里一样;
但是,即使使用了inline关键字,函数也并非肯定会被当做一个内联函数来对待。
函数的重载
一般来说,重载的函数最适用于需要对不同的数据类型进行相同处理的场合;我们无法通过只改变函数返回值的类型而重载一个函数。
如果只是想让一个参数能够接受(比如)两个或三个输入参数,把第三个输入参数定义为可选参数(让它有一个默认值)即可。
变量作用域
绕开变量作用域的办法之一是在发出函数调用时按引用传递;
函数内部的变量可以被声明为 static(静态) 的,函数内部的静态变量的值在程序的生命周期内即使经历多次函数调用也不会被自动重置,但它仍然是局部的。
[code]#include <iostream> void testStatic() { static int count = 0; //在子函数中定义静态变量病初始化为0 count++; //以后每调用一次此函数,静态变量值加1,并打印其值 std::cout << "count = " << count << std::endl; } int testMax(int a, int b, int c = 10) { if(10 == c) //有一个默认的第三参数,如果第三个参数为默认,即为比较两个数中最大的 { return (a>b?a:b); } else { if(a > b && a > c ) { return a; } else if(b > a && b > c) { return b; } else { return c; } } } int main(int argc, char** argv) { int max; max = testMax(3,7); //两个参数时的情况 std::cout << "max = " << max << std::endl; testStatic(); testStatic(); testStatic(); return 0; }
运行结果为
[code]max = 7 count = 1 count = 2 count = 3 //每次调用testStatic(),count值加1
如果在main()函数中加入
std::cout << count;则会出错,因为虽然多次调用函数时,函数内部的静态变量不会被重置,但它仍然是局部的,主程序不能识别。
C++入门(4):文件读写
相关文章推荐
- C++ 大规模程序设计 之 包
- C/Cpp的 typedef
- C语言复习(1)
- Problem H: C语言实验——数组逆序
- C++实现的农历算法
- 一个比较全的C++农历算法
- ln ,lg,log在c语言中的表示
- C语言exp()函数
- c++ 计算某个日期是星期几,判断某年某月一号是星期几
- OC语言--基础语法
- (二)代理模式C++
- C语言文件操作(3) --- stdio.h中其他有关文件操作的函数
- C语言的内存分配
- 邻接表实现PRIM算法(C++)
- 【C++】学籍管理系统
- C++最佳编程实践
- c++ 函数调用在进入下一个循环的时候会再次初始化参数,将函数体直接写进去就正常
- C++ Primer笔记7_STL之关联容器
- Problem B: C语言习题5.14--for循环画三角形
- Problem A: C语言习题5.19--递归方法实现逆序