zoukankan      html  css  js  c++  java
  • C++中如何访问全局变量和全局函数

    全局变量和全局函数是相对局部变量和局部函数而言的,不在{}或者for, if 等范围内的都是全局变量或者全局函数,最简单的是在同一个文件中去声明。

    例如在mian.cpp中

    #include <iostream> 

    int gResult;

    int gAdd(int a, int b) {

      return a + b;

    }

    int main(int argc, const char * argv[]) {

      gResult = aAdd(2, 3);

    }

     这样的话main函数上面的都是都是全局变量和全局函数;在整个文件中都可以调用的到,也就是说全局变量是对其所在的整个文件而言的。

    但是问题来了,我们需要使用其他文件中全局变量怎么办,或者说我们需要整个项目中只有唯一的一个全局的变量。

    声明的时候是一样的,只是在调用的时候需要用extern关键字在用的文件中重新声明一下就可以了。

    例如:

    我们在base.cpp中声明一个全局的变量和全局函数

    #include <iostream>

    #include "base.h"

    int gResult;

    int gAdd(int a, int b){

      return a + b;

    }

    void print(){

    std::cout<<gRedult<<std::endl;

    }

    现在我们需要在mian.cpp中调用全局变量和全局函数;

    int main(int argc, const char * argv[]) {

    //重新声明base.cpp中的全局变量和全局函数;

      extern int gResult;

      extern int gAdd(int a, int b);

      extern void print();

      gResult =  gAdd(2, 3);

    //可以看到两次打印的结果都是5,因为他们操作的是同一个全局变量;

      std::cout<<gResult<<std::endl;

      print();  

    }

    转自:http://www.cnblogs.com/alex-zhou/p/4211034.html

    全局函数是定义在类外的函数,可以被其他文件中函数调用
     
    全局函数就是可以被其他文件中函数调用,比如一个大型程序,由很多人来共同编写,每个人写的程序为一个文件,全局函数就可以被另一个文件中的程序调用,声明函数时不管写没写extern都默认为全局函数,如果不想被其他人调用,可以用static来定义,就只能被本文件程序调用
    全局函数是定义在类外的函数,成员函数就是定义在类中的函数。
    下面是定义的方法。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    //函数定义方法
    返回类型 函数名(形式参数表列)
    {
        函数体语句
        return 表达式;//void类型的return是没有的或者就是一个return;用来结束函数
    }
    //例如:定义一个返回char类型的一个叫plus的函数,传入一个参数char c;
    char plus(char c)
    {
        c=c+1;
        return c;
    }
    //函数声明方法
    返回类型 函数名(形式参数表列);
    //函数调用方法:
    函数名(实际参数表列);
    //举个栗子
    int main(void)
    {
        char c = 'T';
        c = plus(c);  //此时调用了plus函数
        std::cout << c << std::endl;
        return 0;
    }
    全局函数的关键字是extern通常不写函数extern的会默认为extern。
  • 相关阅读:
    2022年第一天
    RestTemplate、 Ribbon、 OpenFeign 关系以及OpenFeign使用连接池
    linux下面编写简单的c++程序
    Rocket简介以及单机版安装
    事务源码(二)
    javaagent技术&Attach技术
    gateway网关原理
    Maven自定义插件以及使用
    AotucCrawler 快速爬取图片
    Monkey工具之fastbotiOS实践
  • 原文地址:https://www.cnblogs.com/liushui-sky/p/6548431.html
Copyright © 2011-2022 走看看