分享

CPP函数基础知识详解

 昵称32937624 2019-01-19

CPP函数基础知识详解

什么是函数?

函数是能够实现特定功能的程序模块,他可以是只有一条语句的简单函数,也可以是包含许多子函数的复杂函数。

函数的分类

1.简单函数和复杂函数

2.库函数和自定义函数

3.功能函数:字符函数、日期函数、数学函数、图形函数、内存函数等。

注:

一个程序可以只有一个主函数,但是不可以没有函数。

CPP函数基础知识详解

函数的定义

类型标识符 函数名 (形参列表) {变量的声明语句}

注:

  • 类型标识符:

    标识函数的返回值类型:整型、字符型、指针型、对象的数据类型、空类型等
  • 形参列表:

    函数中所需要输入的参数列表
  • 形参列表可以为空,即定义无参函数。
  • 函数后面的大括号表示函数体,在函数体内进行变量声明和实现语句的添加。

实例:

int GetMax(int a , int b){int a; //变量的声明int b;if a>b //函数功能语句的实现return a;elsereturn b;}

CPP函数基础知识详解

函数的声明

int GetMax(int a ,int b);

函数声明被称为函数原型,函数声明时可以省略变量名。

实例: 函数的使用

#include <iostream>using namespace std;int GetMax(int ,int ); //函数声明int GetMax(int a ,int b) //函数的实现{if (a>b) //函数功能语句的实现return a;elsereturn b;}void main(){ cout << GetMax(5, 9) << endl; //函数的调用 --实参system('pause');} 

注:

函数的声明,函数的实现,变量的声明,变量的使用,函数的调用。

结果为:

CPP函数基础知识详解

函数参数和返回值

函数参数: 函数的输入(input)

函数返回值:函数的输出(output)

返回值要求:

  1. 函数返回值的类型和函数定义中函数的类型标识符应保持一致。如果两者不一致,则以函数类型为准,自动进行类型转换。
  2. 函数类值若为整型,在函数定义时可以省去类型标识符。
  3. 在函数中允许有多个return语句,单每次调用只能有一个被执行。
  4. 不反悔函数值的函数,可定义为空类型void。
  5. 类型为void的函数不能进行赋值运算即值传递。
  6. 为了降低程序出错的几率,凡是不要求返回值的函数都定义为空类型。

CPP函数基础知识详解

空函数

没有参数和返回值,函数的作用域也为空的函数即空函数。

void setname(){}

存在的意义:预定义功能

在程序设计中往往根据需要确定若干模块,分别由一些函数来实现。因此就需要先定义一个空函数占位,然后在开发。是程序设计的结构清除,可读性好,以后扩充新功能方便,且对程序结构影响不大。形参、实参和无参

形参:a,b ---输入变量 --函数调用时赋值。

int GetMax(int a ,int b ){int a; //变量的声明int b;if a>b //函数功能语句的实现return a;elsereturn b;}

CPP函数基础知识详解

实参:函数调用时赋值即实参。

void main(){ GetMax(5,9); //函数的调用 --实参}

注:

  1. 形参和实参个数相等,类型一致。
  2. 实参与形参按顺序对应,函数被调用时会一一传数据。

  1. 内存方面:形参定义,不占内存,函数调用时,给形参分配内存单元,调用结束即释放。(函数调用--分配空间--参数值传递--释放空间)
  2. 值方面:实参是确定的值。 形参接收实参的值传递或者地址传递。
  3. 传递方面:实参与形参之间单向传递,只能由实参传递给形参。
  4. C++支持引用型变量,引用型变量则没有值传递的过程。

默认参数

在调用有参函数时,如需经常传递同一个值到调用函数,在定义时,可以为参数设置一个默认值,这样在调用函数时就可以省略一些参数,此时程序将采取默认值作为函数的实际参数。

实例:定义参数默认值

#include<iostream>using namespace std;void WelYou(const char* wy='剑云锋谢谢你们的支持,让我们共同成长!'){cout<<wy<<endl; //输出默认值}void main(){ WelYou(); //调用函数(默认参数作实参) WelYou('剑云锋祝愿大家新年快乐!'); //直接传递实参。 system('pause');}

注:

默认参数不能出现在非默认参数的左方。否则会导致编译错误。

结果为:

CPP函数基础知识详解

可变参数

可变参数:“...”表示可变。例如库函数printf函数。

_CRTIMP int_cdecl printf(const char* , ...);printf('%d\n','剑云锋'); //输出一项信息printf('%s-%s-%s\n', '剑云锋','欢迎你',',谢谢!'); //输出多项信息

注:

可变参数的函数,在定义函数时需要一一读取用户传递的实际参数。可以使用va_list 类型和va_start,va_arg,va_end 3个宏 读取传递到函数的参数值。使用可变参数,需引用stdarg.h头文件。

CPP函数基础知识详解

实例:可变参数的定义和调用。

#include<iostream>#include<stdarg.h> //包含宏头文件using namespace std;void WelYou(int num ,...) //定义可变参数函数{va_list arguments; //定义va_list类型变量va_start(arguments,num);while(num--){char* wy =va_arg(arguments,char*); //获取字符串数据int i=va_arg(arguments,int ); //获取整型数据cout<<wy<<endl; //输出字符串cout<<i<<endl; //输出整数}va_end(arguments);}void main(){	WelYou(2, '剑云锋',2018,'剑云锋', 2019);//调用WelYou函数system('pause');}

结果为:

CPP函数基础知识详解

函数变量作用域

变量位置分类:全局变量和局部变量。

全局变量:在函数体外定义的变量称为全局变量。

局部变量:在函数体内定义的变量称为局部变量。

实例:

#include <iostream>using namespace std;int total; //定义全局变量int GetCount(); //声明函数void main(){int total=529; //局部变量cout<<total<<endl;cout<<GetCount()<<endl;system('pause');}int GetCount(){total=925; //给全局变量赋值return total;}

注:

  • 全局变量使用一定要慎重,能不用则不用。
  • 变量都有它的生命周期。
  • 全局变量在程序开始时创建并分配空间,在程序结束时释放内存并销毁;
  • 局部变量是在函数调用时创建,并在栈中分配内存,在函数调用结束后销毁并释放。

结果为:

CPP函数基础知识详解

本文部分内容参考至教材,如有错误,敬请指正,如有侵权,请联系修改,谢谢。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多