C++:内联函数、重载函数、递归、补码

来源:互联网 发布:电路接线图软件 编辑:程序博客网 时间:2024/05/19 22:23

http://www.cppreference.com    这里可以查阅各种常用的标准c++函数的原型、头文件和用法。



函数名: exit()

所在头文件:stdlib.h(如果是”VC6.0“的话头文件为:windows.h)

功 能: 关闭所有文件,终止正在执行的进程。

exit(1)表示异常退出.这个1是返回给操作系统的。

exit(x)(x不为0)都表示异常退出

exit(0)表示正常退出



原型:extern int toupper(int c)

用法:#include <ctype.h>

功能:将字符c转换为大写英文字母

说明:如果c为小写英文字母,则返回对应的大写字母;否则返回原来的值。


原型:# include  <iomanip>

在c++程序里面经常见到上面的头文件

io代表输入输出,manip是manipulator(操纵器)的缩写(在c++上只能通过输入缩写才有效)

eg:setw( n ) 设域宽为n个字符::这个控制符的意思是保证输出宽度为n




反码与补码

正数的 反码 和 补码 与 原码 表示相同
负数的 反码 与 原码 关系:符号位相同(扔用1表示),其余各位取反(0变1,1变0)
负数的 补码 由该数的 反码 加 1 求得

有符号整数 与 无符号整数,在计算机内部是如何区分的?
       有符号整数在计算机内是以二进制补码形式存储的,其最高位是符号位。“0”表示“正“,“1”表示负
       无符号整数只能是正数,在计算机内是以绝对值形式存放的


重载函数

函数原型、函数定义、函数调用中的参数名
       不必一致,所有的参数是根据位置和类型,而不是名字来区分的

重载函数:参数个数 和 数据类型 的不同来实现重载
注意:
  1. 重载函数不以形参名来区分函数
  2. 重载函数不以返回值来区分函数
  3. 使用具有默认形参值的函数重载形式时,要注意防止二义性
          eg: void fun(int length, int width=2, int height=33)
                  void fun(int length)
                  当调用 fun(1), 编译器会指出语法错误


最大公约数与最小公倍数

两个数 i,j ; 最大公约数 m,  最小公倍数 n
则有关系: i*j = m*n



递归

嵌套调用与递归调用:
嵌套调用:如果函数 1 调用了函数 2, 函数 2 再调用了函数 3, 便形成了函数嵌套调用
递归调用:函数可以直接或间接调用自身

最简单的递归例子:(求1+2+.......+n)
调用 fn1(100)
int fn1(int i)
{
     if(i==1)
          return 1;
     else
          return i + fn1(i-1);
}

函数发生递归调用时,同一个局部变量在不同的递归深度上可以同时存在不同的取值,底层是如何做到的?
答案:编译器会为函数的形参和局部变量分配不同的空间,它们互不影响


内联函数:(使用关键字inline

内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处
优点:节省了参数传递、控制转移等开销
特点:内联函数体内不能有循环语句和switch语句。内联函数的定义必须出现在内联函数第一次被调用之前。对内联函数不能进行异常接口声明。


0 0
原创粉丝点击