C++基础之函数和作用域
(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++基础之函数和作用域的更多相关文章
- JavaScript基础学习-函数及作用域
函数和作用域是JavaScript的重要组成部分,我们在使用JavaScript编写程序的过程中经常要用到这两部分内容,作为初学者,我经常有困惑,借助写此博文来巩固下之前学习的内容. (一)JavaS ...
- JavaScript基础03——函数的作用域及变量提升
1.作用域 作用域,变量在函数内部作用的范围/区域.有函数的地方就有作用域. 2.局部作用域和全局作用域 function fn(){ var a = 1; } console.log(a); / ...
- python基础(7)-函数&命名空间&作用域&闭包
函数 动态参数 *args def sum(*args): ''' 任何参数都会被args以元组的方式接收 ''' print(type(args)) # result:<class 'tupl ...
- python基础之函数参数、嵌套、返回值、对象、命名空间和作用域
函数的使用原则 函数的使用必须遵循:先定义后使用的原则 函数的定义,与变量的定义是相似的,如果没有事先定义函数而直接引用就相当于在引用一个不存在变量名 定义阶段:只检测语法,不执行代码,当出现语法错误 ...
- python基础知识07-函数作用域和匿名函数
1.匿名函数 list(filter(lamda a:a>3,[1,2,3,4,5])) 一般和过滤器一起使用 2.函数的作用域 a = 123 def test(): a = 666 a = ...
- python基础-3 集合 三元运算 深浅拷贝 函数 Python作用域
上节课总结 1 运算符 in 字符串 判断 : “hello” in "asdasfhelloasdfsadf" 列表元素判断:"li" in ['li', ...
- 【python基础语法】函数的作用域和内置函数和关键字(第7天课堂笔记)
一.函数的作用域: 1.全局变量 2.局部变量 3.global 二.内置函数 1.常见的内置函数 print : 输出 input : 输入 type : 查看数据类型 id : 获取数据的内存地址 ...
- Javascript基础回顾 之(二) 作用域
本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...
- js函数的作用域与this指向
函数的作用域与this指向是js中很重要的一部分,理清这点东西需要个逻辑,看看我的逻辑怎么样... 下面是个提纲,可以直接挑你感兴趣的条目阅读. 函数的定义方式:直接定义(window下,内部定义), ...
随机推荐
- 大话设计模式--策略模式 strategy -- C++实现实例
1. 策略模式: 它定义了算法家族, 分别封装起来,使他们之间可以相互替换,此模式让算法变化, 不会影响到使用算法的客户. 用相同的方法调用不同的算法,减少各种算法类与使用算法类之间的耦合. 实例中策 ...
- Python 模块EasyGui
1.msgBox msgbox(msg='(Your message goes here)', title=' ', ok_button='OK', image=None, root=None) ms ...
- asp.net中关于《%=》《%#》《%》 的用法——(转帖)
1:在.aspx页面,<% %>标签相当于在.cs页面的代码,也就是说你在.cs文件里面怎样写,就可以在.aspx文件里面的<% %>标签里面怎样写. 2:在.aspx页面,& ...
- 循环递归+返回值(TreeView示例)
示例:获取TreeView的所有Node,保存到List<TreeNode>,封装到通用工具类: 方法一:使用static方法.属性---调用前清空static类型的List public ...
- python MLP 神经网络使用 MinMaxScaler 没有 StandardScaler效果好
MLP 64,2 preprocessing.MinMaxScaler().fit(X) test confusion_matrix:[[ ...
- IO - 同步,异步,阻塞,非阻塞 (转帖:http://blog.csdn.net/historyasamirror/article/details/5778378)
同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出 ...
- Code Chef - Chef and Graph Queries
传送门 题目大意 给定一个$n$个点$m$条边的无向图$(n,m\leq 200000)$. 有$q$每次询问$(q\leq 200000)$,每次给定一个区间$L,R$,求仅保留编号$\in[L,R ...
- 洛谷【P2201】数列编辑器
我对模拟的理解:http://www.cnblogs.com/AKMer/p/9064018.html 题目传送门:https://www.luogu.org/problemnew/show/P220 ...
- Sublime 实践
1.下载开发版:http://www.sublimetext.com/dev 2.安装Package control: (1)按键ctrl+~ (2)在命令行中输入: import urllib2, ...
- Poj 2503 Babelfish(Map操作)
一.Description You have just moved from Waterloo to a big city. The people here speak an incomprehens ...