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下,内部定义), ...
随机推荐
- Java Applet:练习TextField类和TextArea类的文本事件
出自: Java语言与面向程序程序设计(第二版) 第七章第五节P223 1. [代码]java代码 /** *这个程序主要来练习文本事件,当在文本框(TextField)中输入文字时,会在文本域(Te ...
- Cocos2d-x中常用宏的作用
1. CC_SYNTHESIZE(int, nTest, Test); 相当于: protected: int nTest; public: virtual nTest getTest(void) c ...
- java: jdk1.8以后就不支持桥接的方式
java: jdk1.8以后就不支持桥接的方式 如果想继续使用桥接的方式,请使用jdk1.7及以下版本.
- Java_io_02_从一个目录拷贝文件到另一个目录下
java从一个目录拷贝文件到另一个目录下 http://www.cnblogs.com/langtianya/p/4857524.html ** * 复制单个文件 * @param oldPath ...
- ACM学习历程—Hihocoder 1289 403 Forbidden(字典树 || (离线 && 排序 && 染色))
http://hihocoder.com/problemset/problem/1289 这题是这次微软笔试的第二题,过的人比第三题少一点,这题一眼看过去就是字符串匹配问题,应该可以使用字典树解决.不 ...
- 高级Java工程师必备 ----- 深入分析 Java IO (二)NIO
接着上一篇文章 高级Java工程师必备 ----- 深入分析 Java IO (一)BIO,我们来讲讲NIO 多路复用IO模型 场景描述 一个餐厅同时有100位客人到店,当然到店后第一件要做的事情就是 ...
- pycharm ubuntu安装
https://www.cnblogs.com/iamjqy/p/7000874.html
- python 基础 列表 字符串转换
1. 字符串转列表 str1 = "hi hello world" print(str1.split(" "))输出:['hi', 'hello', 'worl ...
- ueditor1.4.3jsp版成功上传图片后却回显不出来与在线管理显示不出图片的解决方案
这是因为路径问题,可以在jsp/config.json这个文件去改路径 通过“imageUrlPrefix”与“imagePathFormat”这两个属性去拼凑路径. “imageUrlPrefix” ...
- How to Write a Spelling Corrector用java 写拼写检查器 Java实现 以备查验
import java.io.*;import java.util.*;import java.util.regex.*; class Spelling { private final HashMap ...