全局变量

在函数外面定义的变量的作用域为全局,在程序的任何函数中都可用。与全局变量同名的局部变量不会修改全局变量的值,但会隐藏它。如果函数中有一个与全局变量同 名的局部变量时,则在函数中使用该名称时,指得是局部变量而不是全局变量。这个也是面试中经常问到的?局部变量能否和全局变量重名?具体看下面的代码

#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++程序世界-----函数相关(全局变量)的更多相关文章

  1. 走进C++程序世界-----继承和派生(2)

    覆盖基类的函数 覆盖基类函数顾名思义就是在派生类中对基类的函数进行的重新定义.这里将会讲到下面的2个知识点: 1.隐藏基类的方法 2.调用基类的方法(隐式和显示调用基类的方法) /* *derive2 ...

  2. 走进C++程序世界------继承和派生

    继承和派生 继承是面向对象编程语言的最重要方面之一,正确的使用继承可编写出设计良好,容易于维护和扩展的应用程序.下面是在其他博客中的总结: ****************************** ...

  3. 走进C++程序世界------IO标准库介绍

    流概述    流是C++标准的组成部分,流的主要目标是,将从磁盘读取文件或将输入写入控制台屏幕的问题封装起来,创建流后程序猿就能够使用它.流将负责处理全部的细节. IO类库 在C++输入、输出操作是通 ...

  4. 走进C++程序世界------异常处理

    一. 概述 C++自身有着很强的纠错能力,发展到现在,已经建立了比較完好的异常处理机制. C++的异常情况无非两种,一种是语法错误.即程序中出现了错误的语句,函数.结构和类,致使编译程序无法进行.还有 ...

  5. 走进C++程序世界-------类的定义和使用(数据成员和方法成员,析构函数,构造函数,内联实现)

    类的成员简介 在C++中,可以通过声明一个类来穿件一种新的类型.类将一组变量(他们的类型通常不同)和一组相关的函数组合在一起.类可以有各种类型的变量组成,还可以包含其他类对象.成员变量称为数据成员它们 ...

  6. 走进C++程序世界-----operator new delete 重载

     在C++ 的世界里,new 和delete 是keyword.而在C的世界里相相应的malloc和free是函数,关键C++的new和delete分析,详见前面的章节.这里就不在过多的介绍了.链接. ...

  7. [C#] 走进 LINQ 的世界

    走进 LINQ 的世界 序 在此之前曾发表过三篇关于 LINQ 的随笔: 进阶:<LINQ 标准查询操作概述>(强烈推荐) 技巧:<Linq To Objects - 如何操作字符串 ...

  8. 走进缓存的世界(三) - Memcache

    系列文章 走进缓存的世界(一) - 开篇 走进缓存的世界(二) - 缓存设计 走进缓存的世界(三) - Memcache 简介 Memcache是一个高性能的分布式内存对象缓存系统,用于动态Web应用 ...

  9. 带你走进rsync的世界

    导读 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘中的不同目录.rsync共有3种使用方 ...

随机推荐

  1. 将文件从数据库(MySQL)中进行读取

    package com.play; import java.io.FileOutputStream; import java.io.OutputStream; import java.sql.Blob ...

  2. Oracle存储过程function语法及案例

    create or replace function F01_SX03_SUM(statdate varchar2, code varchar2, para varchar2) RETURN numb ...

  3. Cannot mix incompatible Qt library (version 0x40801) with this library (version 0x40804)

    安装EMAN2(单颗粒重构的软件)之后,运行e2projectmanager.py来启动程序出现了这个错误. 去网上找了一下,发现一个靠谱的方案,这个问题出现是由于EMAN2这个程序自带了Qt的库,而 ...

  4. myeclipse 8.6 插件安装之SVN

    在这里我要说明一点,myEclipse 8.6的插件安装和之前的版本可能会有一些区别,下面是SVN插件的安装: 1.从官网下载site-1.6.13.zip文件,网址是:subclipse.tigri ...

  5. [LeetCode]题解(python):023-Merge k Sorted Lists

    题目来源: https://leetcode.com/problems/merge-k-sorted-lists/ 题意分析: 给定k个有序的链表,将这些链表整合成一个新的有序链表. 题目思路: 前面 ...

  6. oracle 10g函数大全--分析函数

    oracle分析函数--SQL*PLUS环境 一.总体介绍 12.1 分析函数如何工作 语法 FUNCTION_NAME(<参数>,…) OVER (<PARTITION BY 表达 ...

  7. android获取系统wifi状态等

    WIFI 获取WIFI状态 WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE); ...

  8. 基于visual Studio2013解决C语言竞赛题之0301函数求值

     题目 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <math.h> void main() ...

  9. 解题报告 HDU1176 免费馅饼

    免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  10. 国际名品SYSTEM入驻北京金融街购物中心__购物败家_YOKA时尚网

    国际名品SYSTEM入驻北京金融街购物中心__购物败家_YOKA时尚网 国际名品SYSTEM入驻北京金融街购物中心