走进C++程序世界-----函数相关(全局变量)
全局变量
在函数外面定义的变量的作用域为全局,在程序的任何函数中都可用。与全局变量同名的局部变量不会修改全局变量的值,但会隐藏它。如果函数中有一个与全局变量同 名的局部变量时,则在函数中使用该名称时,指得是局部变量而不是全局变量。这个也是面试中经常问到的?局部变量能否和全局变量重名?具体看下面的代码
#include <iostream> int x = 5;
int y = 7; void myfunction()
{
using namespace std; int y = 10;
cout << "********myfunction start******" << endl;
cout << "myfunction x = " << x << endl;
cout << "myfunction y = " << y << endl;
cout << "********myfunction end******" << endl; return;
}
int main()
{
using namespace std;
cout << "执行函数myfunction 前:" << endl;
cout << "main x = " << x << endl;
cout << "main y = " << y << endl; myfunction();
cout << "执行函数myfunction 后:" << endl;
cout << "main x = " << x << endl;
cout << "main y = " << y << endl; return 0;
}
输出:
行函数myfunction 前:
main x = 5
main y = 7
********myfunction start******
myfunction x = 5
myfunction y = 10
********myfunction end******
执行函数myfunction 后:
main x = 5
main y = 7
在C++中,全局变量是合法的,但人们几乎不使用它。在C语言中经常使用,但它很危险,因为不知道程序的哪些地方会修改它的数值。
******************************************************************华丽分界线*******************************************************
默认参数
long function(int x = 50);
该原型指出:函数function()接受一个int参数,并返回long型值,如果没有提供参数则使用默认值50.由于函数原型中可以不包含参数名,因此上面的生命也可以写成这样
long function( x = 50);
生命默认参数对函数定义没有影响,在上述函数的定义中,函数头如下:
long function( int x)
{
xxxxxx;
}
如果调用该函数时没有提供参数,编译器将把X的设置成默认数值50.看下面的例子:
#include <iostream>
int area(int length,int width = 25, int height = 1); int area(int length,int width,int height)
{
return length*width*height;
}
int main()
{
using namespace std; int length = 100;
int width = 50;
int height = 2; cout << "area(length,width,height) is :" << area(length,width,height) << endl;
cout << "area(length,width) is :" << area(length,width) << endl;
cout << "area(length) is :" << area(length) << endl; return 0; }
输出:
area(length,width,height) is :10000
area(length,width) is :5000
area(length) is :2500
重载函数
走进C++程序世界-----函数相关(全局变量)的更多相关文章
- 走进C++程序世界-----继承和派生(2)
覆盖基类的函数 覆盖基类函数顾名思义就是在派生类中对基类的函数进行的重新定义.这里将会讲到下面的2个知识点: 1.隐藏基类的方法 2.调用基类的方法(隐式和显示调用基类的方法) /* *derive2 ...
- 走进C++程序世界------继承和派生
继承和派生 继承是面向对象编程语言的最重要方面之一,正确的使用继承可编写出设计良好,容易于维护和扩展的应用程序.下面是在其他博客中的总结: ****************************** ...
- 走进C++程序世界------IO标准库介绍
流概述 流是C++标准的组成部分,流的主要目标是,将从磁盘读取文件或将输入写入控制台屏幕的问题封装起来,创建流后程序猿就能够使用它.流将负责处理全部的细节. IO类库 在C++输入、输出操作是通 ...
- 走进C++程序世界------异常处理
一. 概述 C++自身有着很强的纠错能力,发展到现在,已经建立了比較完好的异常处理机制. C++的异常情况无非两种,一种是语法错误.即程序中出现了错误的语句,函数.结构和类,致使编译程序无法进行.还有 ...
- 走进C++程序世界-------类的定义和使用(数据成员和方法成员,析构函数,构造函数,内联实现)
类的成员简介 在C++中,可以通过声明一个类来穿件一种新的类型.类将一组变量(他们的类型通常不同)和一组相关的函数组合在一起.类可以有各种类型的变量组成,还可以包含其他类对象.成员变量称为数据成员它们 ...
- 走进C++程序世界-----operator new delete 重载
在C++ 的世界里,new 和delete 是keyword.而在C的世界里相相应的malloc和free是函数,关键C++的new和delete分析,详见前面的章节.这里就不在过多的介绍了.链接. ...
- [C#] 走进 LINQ 的世界
走进 LINQ 的世界 序 在此之前曾发表过三篇关于 LINQ 的随笔: 进阶:<LINQ 标准查询操作概述>(强烈推荐) 技巧:<Linq To Objects - 如何操作字符串 ...
- 走进缓存的世界(三) - Memcache
系列文章 走进缓存的世界(一) - 开篇 走进缓存的世界(二) - 缓存设计 走进缓存的世界(三) - Memcache 简介 Memcache是一个高性能的分布式内存对象缓存系统,用于动态Web应用 ...
- 带你走进rsync的世界
导读 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘中的不同目录.rsync共有3种使用方 ...
随机推荐
- Sicily-1153 解题报告
一.原题中文大意. 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
- Android UI 之一步步教你自定义控件(自定义属性、合理设计onMeasure、合理设计onDraw等)
Android开发做到了一定程度,多少都会用到自定义控件,一方面是更加灵活,另一方面在大数据量的情况下自定义控件的效率比写布局文件更高. 一个相对完善的自定义控件在布局文件中和java ...
- 【server端学习】修改Apache配置使支持shtml
主要工作:修改httpd.conf文件[步骤一]去掉下面两行的注释#AddType text/html .shtml #AddOutputFilter INCLUDES .shtml [步骤二]在Op ...
- 11个实用但你可能不知道的Python程序库
目前,网上已有成千上万个Python包,但几乎没有人能够全部知道它们.单单PyPi上就有超过47000个包列表. 现在,越来越多的数据科学家开始使用Python,虽然他们从pandas,scikit- ...
- Visual Studio Tools for Unity安装及使用
Visual Studio Tools for Unity安装及使用 转载自:CSDN 晃了一下,10.1到现在又过去两个月了,这两个月什么也没有学,整天上班下班,从这周末开始拾起unity,为了年后 ...
- Java 使用Dom4j和JFileChooser实现xml文件的自主选择路径导出
直接来个简单的例子,大家一看便知. Document doc=DocumentHelper.createDocument();//创建document Element rootElement=doc. ...
- Jetty 8.1 安装 运行 部署
链接地址:http://blog.csdn.net/lego2816/article/details/42650545 Java + MySQL 从Jfinal开始,第一步先走完整个流程,主要是发布部 ...
- BZOJ 1644: [Usaco2007 Oct]Obstacle Course 障碍训练课( BFS )
BFS... 我连水题都不会写了QAQ ------------------------------------------------------------------------- #inclu ...
- Oracle 11g New 热补丁
热补丁:概览 对于Oracle 实例上的bug 修复或诊断补丁程序,热补丁 可以执行以下操作: • 安装 • 启用 • 禁用 热补丁:概览 使用热补丁可以安装.启用和禁用 正在运行的 活动Oracle ...
- 网站压力测试之ApacheBench
ApacheBench是 Apache 附带的一个小工具,专门用于 HTTP Server 的benchmark testing,可以同时模拟多个并发请求.使用yum安装apache,ab工具在/us ...