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下,内部定义), ...
随机推荐
- Neutron Callback System
用于core and service components之间的通信,传递resource的lifecycle events (e.g. before creation, before deletio ...
- Eclipse debug neutron-server
1 首先停掉neutron-server kill neutron-server in screen by ctr-c q-svc 2 cp /usr/local/bin/neutron-server ...
- 分享知识-快乐自己:运行(wordcount)案例
运行 wordcount 案例: 一):大数据(hadoop)初始化环境搭建 二):大数据(hadoop)环境搭建 三):运行wordcount案例 四):揭秘HDFS 五):揭秘MapReduce ...
- mysql数据库更新
在使用mysql数据库的时候,A方使用一个版本,B方在使用一个版本数据库进行开发使用,B方在开发的时候,有新的需求,需要添加表字段和所需要的表.但是A方已经在使用之前的版本数据库并且数据库里面有真实的 ...
- Using SMOTEBoost(过采样) and RUSBoost(使用聚类+集成学习) to deal with class imbalance
Using SMOTEBoost and RUSBoost to deal with class imbalance from:https://aitopics.org/doc/news:1B9F7A ...
- qt和makefile学习网址
http://blog.51cto.com/zt/20/1/ ---qt学习网站 http://www.chinaunix.net/old_jh/23/408225.html [精华] 跟我一起 ...
- JdbcUtils针对事务问题作出的第三次修改
DAO中的事务 其实在DAO中处理事务真的是“小菜一碟” try{ con.commit(); }catch(Exception e){ con.rollback(); } 但是dao层中只能是对账户 ...
- Javascript-- jQuery样式篇(二)
jQuery的属性与样式 .attr()与.removeAttr() 每个元素都有一个或者多个特性,这些特性的用途就是给出相应元素或者其内容的附加信息.如:在img元素中,src就是元素的特性,用来标 ...
- hdu4699 Editor(双向链表或双栈对弹)
本题就是两个要点: 1.数据结构的设计.显然可以使用双向链表来做,但是写双向链表的代码复杂度高.其实更好的方法是使用两个对弹的栈来做,而且没必要用STL的栈,就自己开两个数组简单搞一下就好了. 2.最 ...
- HasnMap的一种遍历方式:Map.Entry 和 Map.entrySet()
1.Map.Entry 和 Map.entrySet()分别是什么? Map.entrySet():根据名字便可知道,这是一个集合,是一个映射项的set. Map.Entry<k,v>: ...