(1)函数的定义格式如下所示。
<类型><函数名>(<形参表>)
{
<若干条语句>
}
其中,<类型>包含存储类和数据类型。存储类省略为外部函数,加static为内部函数;数据类型又称函数返回值的类型,不可省略。<函数名>同标识符,<形参表>中可以有一个或多个参数,多不参数用逗号分隔,也可以没有参数。以上是函数头。函数体是由一对花括号括起来的若干条语句。如果函数体内无语句,称为空函数。
(2)函数的说明方法是使用函数的原型,即函数头,它包含了<类型>、<函数名>和函数参数的类型及个数。凡是定义在后,调用在先,调用之前都必须说明。
(3)函数的类型是该函数返回值的类型。函数的值是该函数的返回值。一个有返回值的函数中需要一条带表达式的返回语句,其格式如下所示。
return<表达式>;
(4)函数的调用方式有传值调用和引用调用两种。传值调用中又有传送变量或表达式的值和传送变量地址值两种。这与C语言中的函数调用相同。引用
调用是C语言中的一种重要调用方式。
(5)引用调用时形参使用变量名,实参用引用名。这种调用具有传址调用的特点:一是提高运行效果,因为只传递地址值。二是被调用函数通过改变形参值可以改变实参值。在C+程序中多用引用调用替代传址调用,使之使用起来简单明了而且容易
(6)C+语言允许设置函数参数的默认值。但在设置时应注意先设置右边的参数,不允许在已设置默认值的参数的右边还有没设置默认值的参数。可设置一个参数的默认值,也可以设置所有参数的默认值。在函数调用中,如果实参没有给出值时,使用形参的默认值,如果实参给定值时,使用实参值而不用默认值。
(7)C+语言中引进了内联函数概念。在编译时,将程序中出现的内联函数的调用表达式用内联函数的函数体来进行替换。内联函数定义时在函数头前加关键字 inline。内联函数不允许使用循环和开关语句。关键字inline 必须与函数定义体放在一起才能使函数成为内联,仅将inline 放在函数声明前面不起任何作用。
定义在类声明之中的成员函数将自动地成为内联函数
(8)C语言允许函数重载,即允许同一个函数名对应着多个不同的函数实现。进行函数重载时,要求同名函数在参数的个数、类型和顺序上有所区别,以便区别不同的函数实现。
(9)函数允许嵌套调用和递归调用。

/*编程计算某个正整数的阶乘,假定从鍵盘上输入一个数存入变量n中,求n!*/
#include <iostream>
using namespace std;
long int fac(int n);
int main()
{
int n;
cout<<"Input a positive integer:";
cin >>n;
long fa=fac(n);
cout<<n<<"!="<<fa<<endl;
return ;
}
long int fac(int n)
{
long int p;
if(n==)
p=;
else
p=n*fac(n-);
return p;
}

(10)C++中作用域的种类有程序级、文件级、类级、函数级和块级。
(11)变量的存储类可分为自动类、寄存器类、外部类和静态类,不同存储类的变量和对象的作用域不同,寿命也不同。
(12)函数的存储类分为内部函数和外部函数。

C++基础之函数和作用域的更多相关文章

  1. JavaScript基础学习-函数及作用域

    函数和作用域是JavaScript的重要组成部分,我们在使用JavaScript编写程序的过程中经常要用到这两部分内容,作为初学者,我经常有困惑,借助写此博文来巩固下之前学习的内容. (一)JavaS ...

  2. JavaScript基础03——函数的作用域及变量提升

    1.作用域 作用域,变量在函数内部作用的范围/区域.有函数的地方就有作用域.   2.局部作用域和全局作用域 function fn(){ var a = 1; } console.log(a); / ...

  3. python基础(7)-函数&命名空间&作用域&闭包

    函数 动态参数 *args def sum(*args): ''' 任何参数都会被args以元组的方式接收 ''' print(type(args)) # result:<class 'tupl ...

  4. python基础之函数参数、嵌套、返回值、对象、命名空间和作用域

    函数的使用原则 函数的使用必须遵循:先定义后使用的原则 函数的定义,与变量的定义是相似的,如果没有事先定义函数而直接引用就相当于在引用一个不存在变量名 定义阶段:只检测语法,不执行代码,当出现语法错误 ...

  5. python基础知识07-函数作用域和匿名函数

    1.匿名函数 list(filter(lamda a:a>3,[1,2,3,4,5])) 一般和过滤器一起使用 2.函数的作用域 a = 123 def test(): a = 666 a = ...

  6. python基础-3 集合 三元运算 深浅拷贝 函数 Python作用域

    上节课总结 1 运算符 in 字符串 判断  : “hello” in "asdasfhelloasdfsadf" 列表元素判断:"li" in ['li', ...

  7. 【python基础语法】函数的作用域和内置函数和关键字(第7天课堂笔记)

    一.函数的作用域: 1.全局变量 2.局部变量 3.global 二.内置函数 1.常见的内置函数 print : 输出 input : 输入 type : 查看数据类型 id : 获取数据的内存地址 ...

  8. Javascript基础回顾 之(二) 作用域

    本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...

  9. js函数的作用域与this指向

    函数的作用域与this指向是js中很重要的一部分,理清这点东西需要个逻辑,看看我的逻辑怎么样... 下面是个提纲,可以直接挑你感兴趣的条目阅读. 函数的定义方式:直接定义(window下,内部定义), ...

随机推荐

  1. UI层自动化测试介绍

    UI指的是用户可以用肉眼可以看到的页面. UI层自动化测试的原理.不论是web端还是移动端,原理都是一样的,就是基于页面元素的识别和定位来进行模拟用户行为. 首先识别到某个元素,比如一个按钮,然后定义 ...

  2. 在YUV图像上根据背景色实现OSD反色

    所谓的OSD其实就是在视频图像上叠加一些字符信息,比如时间,地点,通道号等, 在图像上叠加OSD通常有两种方式: 一种是在前端嵌入式设备上,在图像数据上叠加OSD, 这样客户端这边只需解码显示数据即可 ...

  3. 2017-2018-1 20179203 《Linux内核原理与分析》第七周作业及第三周测试总结

    攥写人:李鹏举 学号:20179203 ( 原创作品转载请注明出处) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/US ...

  4. hdu 3998 Sequence

    There is a sequence X (i.e. x[1], x[2], ..., x[n]). We define increasing subsequence of X as x[i1], ...

  5. 搞事情 -- python之线程

    简介 操作系统线程理论 线程概念的引入背景 线程的特点 进程和线程的关系 使用线程的实际场景 用户级线程和内核级线程(了解) 线程和python 理论知识 线程的创建Threading.Thread类 ...

  6. 【Tensorflow】Ubuntu 安装 Tensorflow gpu

    安装环境:Ubuntu 16.04lts 64位,gcc5.4 1.安装Cuda 1. 下载cuda toolkit. 下载cuda8.0 地址:https://developer.nvidia.co ...

  7. POJ 1046 Color Me Less(浅水)

    一.Description A color reduction is a mapping from a set of discrete colors to a smaller one. The sol ...

  8. C#中DataTable用法

    一.select方法1.筛选出男性且名字中带有李的人然后按照生日降序排列(1)DataRow[] rows=DataTable.Select("sex='"+"男&quo ...

  9. linux下 vi 命令大全

    引用:http://www.cnblogs.com/88999660/articles/1581524.html 进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi ...

  10. 微服务理论之三:RPC框架原理

    RPC调用是面向服务架构场景下进行服务间调用的常用组件,一个完整的RPC调用的流程如图1所示: 图1 RPC调用流程 为了方便RPC调用者和服务者的开发,开发者们开发了很多RPC框架.比较有名的RPC ...