c++函数回顾

  函数的定义语法形式:

  类型说明符  函数名(含类型说明符的形参表)

{
      程序语句      
}

调用其他函数的函数被称为主调函数,被其他函数调用的函数被称为被调函数。但如果希望在一个函数定义前调用它,则需要在函数调用前添加该函数的函数原型声明。函数原型声明的形式如下:

类型说明符  函数名 (含类型说明的形参表);

与变量的生命和定义类似,声明一个函数只是将函数的有关信息(函数名、返回值类型、参数表等)告诉编译器。声明函数时,形参表只要包含完整的类型信息即可,形参名可以省略(并不推荐,只是可以存在这种情况)。同时函数又可分为自定义函数和系统函数。

1、系统函数

  充分利用系统函数,可以大大减少编程的工作量,提高程序的运行效率和可靠性。编译环境提供的系统函数分为两类,一类是标准c++的函数,另一类是非标准的c++函数,它是当前操作系统或编译环境中所特有的系统函数。例如,cmath中所声明的sin、cos、tan等函数都是标准函数。

具体常用的函数:(转载自http://www.cnblogs.com/MarkKobs-blog/p/10456759.html

数学<math.h>1 三角函数
double sin (double);
double cos (double);
double tan (double);
2 反三角函数
double asin (double); 结果介于[-PI/2, PI/2]
double acos (double); 结果介于[0, PI]
double atan (double); 反正切(主值), 结果介于[-PI/2, PI/2]
double atan2 (double, double); 反正切(整圆值), 结果介于[-PI/2, PI/2]
3 双曲三角函数
double sinh (double);
double cosh (double);
double tanh (double);
4 指数与对数
double exp (double x); e的x次幂
double pow (double x, double y); x的y次幂
double sqrt (double);
double log (double x); 以e为底的对数,即ln x
double log10 (double x);log10(x) 以10为底。

没有以2为底的函数但是可以用换底公式解 决:log2(N)=log10(N)/log10(2)
5 取整
double ceil (double); 不小于x的最小整数
double floor (double); 不大于x的最大整数
6 绝对值

int abs(int);整型
long labs(long);长整型
double fabs (double);浮点型

7 标准化浮点数
double frexp (double f, int p); 标准化浮点数, f = x 2^p, 已知f求x, p ( x介于[0.5, 1] )
double ldexp (double x, int p); 与frexp相反, 已知x, p求f
8 取整与取余
double modf (double, double*); 将参数的整数部分通过指针回传, 返回小数部分
double fmod (double, double); 返回两参数相除的余数

9.平方根

double sqrt(double x);

字符<ctype.h>int isalpha(int c);c是否为字母
int isdigit(int c);c是否为数字
int tolower(int c);将c转换为小写字母
int toupper(int c);将c转换为大写字母

字符串<string.h>:

char strcpy(char sl,char s2);将字符串s2复制给s1,即覆盖
unsigned strlen(char sr);求字符串str长度

内存操作<memory.h>:

void memcpy(void d,void *s,int c);将s指向的内存区域的c个字节复制到d指向的区域

类型转换<stdlib.h>:

int atoi(char s);将字符串转化为整数
char itoa(int v,char *s,int x);将整数v按x进制转成字符串s

时间<time.h>:

time_t time(time_t *timer);返回1970/1/1零点到目前的秒数

其他<stdlib.h>:

srand(unsigned seed);设置随机数的种子
int rand();产生0-RAND_MAX的随机数
exit(int);终止正在执行的程序
函数相关(侵删)

 

 

 2、递归调用

  函数可以直接或间接的调用自身,称为递归调用。对同一个函数的多次不同调用,编译器会为函数的形参和局部变量分配不同的内存空间,它梦互不影响

# include <iostream>
using namespace std;

// 计算n的阶乘
int fun(int n){

    int d;
    if (n==0) d=1;
    else  f = fun(n-1)*n;
    return f;      

}

int main (){
    int n,y;
    cout<<"请输入参数:" <<endl;
    cin>>n;
     y = fun(n);
    cout<<n<<"的阶乘结果为:"<<y;
    return 0;

}

3、函数的参数传递

  参数传递大致为两类:值传递、引用传递。值传递是指发生函数调用时,给形参分配内存空间,并用实参来初始化形参。这一过程是参数的单向传递,一旦形参获得了值便与实参脱离关系,此后无论形参发生了怎样的改变,都不会影响到实参。引用是一种特殊的变量,可以被认为是另一个变量的别名。也就是说,一个引用,从它诞生之时起,就必须确定是那个变量的别名,而却始终只能作为这一个变量的别名,

 4、函数重载

  两个以上的的函数,具有相同的函数名,但是形参的个数或者类型不同,编译器根据实参和形参的类型及个数的最佳匹配,自动确定调用哪一个函数,这就是函数重载。重载函数的形参必须不同,可以个数不同或者类型不同。

 

posted @ 2019-07-30 15:37  茳荻  阅读(193)  评论(0编辑  收藏  举报