ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++入门之函数

2021-07-17 18:34:16  阅读:180  来源: 互联网

标签:变量 函数 C++ 参数 函数调用 类型 标识符 入门


1.函数概念:能够实现特定功能的的程序模块。

2.函数的结构:

类型标识符 函数名(参数列表)
{
变量的申请;
语句;
}

(1)函数名的命名规则:同变量名的命名规则。
(2)类型标识符:是返回值的类型。
(3)参数列表:由各种类型变量组成。各参数之间用逗号隔开。
3.形参与实参:
注意:参数列表分为无参和有参两种类型。
形式参数:有参函数中的参数在函数申明和定义时候被称为“形式参数”。
实际参数:在函数被调用时赋予具体值,具体的值被称为“实际参数”。
(1)实参与形参的个数相等,类型一致,顺序对应。
(2)在定义函数时候的形参,在未出现函数调用的情况时,它们并不占用内存中的存储单元。在发生函数调用的时候,函数的形参才会被分配存储单元且在函数调用结束后形参所占同的存储的那元被释放。
(3)实参是确定的值,若是形参是指针类型,则将实参的地址值传给形参。
(4)实参与形参之间是单向传递,即实参传递给形参。
4.默认参数:
在调用有参函数的时候,如果经常要传递某一个值到调用函数,在定义函数的时候,可以为形式参数设置一个默认值。程序将采用默认值作为函数的实际参数。注意:默认参数可以在函数调用时候改变。
5.函数的返回值:

return 表达式;

(1)函数返回值的类型与函数定义时候的类型标识符保持一致。(如果不一致,会以函数定义的类型标识符为准。)
(2)如果返回值为整值,在函数定义标识符时候可以省去类型标识符。
(3)函数中可以有多个return语句,但是每次调用只有一个return语句被执行。
(4)没有返回值的函数,类型标识符采用void。
(5)void函数不能进行赋值运算和值传递。
6.空函数:
空函数:没有参数列表和返回值,作用域也为空的函数就是空函数。
空函数的意义:在程序设计中往往根据需要确定若干模块,分别由一些函数来实现。而在第一阶段只设计最基本的模块,其他一些次要功能在以后需要的时候陆续补上。在程序编写的开始阶段,可以在将来准备扩充功能的地方写上空函数,这些函数没有开发完成,先占一个位置,以后好用一个编好的函数代替它。使得程序的结构清楚,可读性好,以后扩充功能更加方便,且对程序影响不大。
7.函数的递归调用:
递归函数:直接或间接调用自身的函数。
递归函数的优点:问题描述清楚,代码可读性强,结构清晰,代码量比使用非递归方法少。
递归函数的缺点:递归程序的运行效率低。对于时间复杂度和空间复杂度要求较高的程序,慎重使用递归函数。
注意:递归函数最先设置的就是停止条件。
8.重载函数:
重载函数:函数具有相同的函数标识符,但是参数类型或者参数个数不同。函数调用的时候,编译器以参数的类型及个数来区分调用哪个函数。注意:类型标识符即返回值类型不作为区分重载函数的一部分。
9.变量的作用域:
局部变量:在函数体内定义的变量。
全局变量:在函数体外定义的变量。
注:当全局变量和区域变量同名时候,程序会优先选择局部变量。若想使用全局变量则在前面加上区域符号::。
10.变量的生存周期:
定义在同一个函数中的变量生存周期并不完全相同。在不同语句块定义的变量,作用域大小也不一样。
11.变量的存储方式:
C++中有四种变量存储方式:
(1)自动变量(C++中默认的存储类型):
自动变量的作用域仅限于定义该变量的个体内。
自动变量属于动态存储方式。变量分配的内存在栈中,当函数调用结束后,自动变量的值会释放。
(2)static变量:
即静态变量,静态 局部变量的值在函数调用结束后不会消失,静态全局变量只能在本源文件中使用。
编译器会为静态变量赋予0值。
(3)register变量:
即寄存器变量,变量存储在寄存器中,提高访问效率。静态变量不能变成寄存器变量。
(4)extern变量:
在使用其他源文件的全局变量时候,只需要在本源文件使用extern关键字说明这个变量即可。

标签:变量,函数,C++,参数,函数调用,类型,标识符,入门
来源: https://blog.csdn.net/Lyhdreamer/article/details/118824978

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有