• 关于c++中的全局变量(不赋值的全局变量算定义)


    定义有三种:

    1.不赋值的定义:int a;

    2.赋值的定义:int a=5; 或者 int a;a=5;

    3.加extern的定义:extern int a=5;//其实和不加是一样的。

    声明只有一种:

    extern int a;

    所有,不要再问我变量不赋值算不算定义,告诉你,算!!!!,你要是敢包含两次不赋值的变量的头文件两次,编译器就敢报错,重定义!!!!

    c++单定义语法规则:变量只能定义一次

    定义与声明的区别:

    定义:声明一个变量,且为它分配内存空间。

    声明:只声明一个变量,并不为它分配内存空间。

    因此定义变量的过程已经声明了这个变量。

    定义变量的方法:

    int a;//定义一个变量a,并且分配了内存空间,值为0(虽然没有显示为变量a提供值,但是编译器已经为a分配了内存空间,且赋值为0)

    int a=5;//定义变量a,并赋值为5(显示的赋值为5)

    extern int a=5;//虽然加上了extern关键字,但是由于显示的赋值了,所以仍然是定义。

    那如何只声明变量呢?

    extern int a;//extern关键字表示变量a已经在别处定义了,这里需要使用,就声明一下。这也是说要使用全局变量,必须要提前声明一下。

    因此全局变量使用规则为:

    1.在define.cpp文件中定义变量

    //define.cpp

    [extern] int a=3;//在文件define.h中定义一个全局变量a,赋值为3.(extern关键字可以有,也可以没有)

    2.在define.h文件中声明变量

    extern int a;

    3.在用户文件中引用变量

    //user.h

    方法一:#include "define.h"  //包含用extern声明的全局变量的文件(因为已经声明了,这里包含一下就可以了)

    或者用extern关键字声明

    方法二:extern int a;  //2.必须声明已经定义了的变量a,这里没有给a分配内存,而是对外部定义好的a的引用;

    4.使用全局变量

    a+=1;  //3.使用全局变量

    注意:

    1.在使用全局变量时,加extern关键字表示系统会在其它文件中查找这个变量。

    2.千万不要在头文件内定义全局变量(即使不赋值也算定义),那样如果有两个文件都包含了这个头文件,则会出现redefine错误。

    3.全局变量最好在.cpp文件内定义,在对应.h文件内用extern声明,使用方包含这个头文件就可以了。

    或者在.cpp文件内定义,在使用方用extern声明就可以了。

  • 相关阅读:
    Ubuntu12.04配置永久静态ip地址
    linux shell 命令获取字符串/文件的MD5值
    设置VMware中Kali 共享文件夹
    tomcat的一些优化及报错
    用Toad for Oracle创建数据库表空间和用户
    linux远程Windows服务器
    linux查询及添加用户
    AJAX
    Cookie和Session
    Django-中间件
  • 原文地址:https://www.cnblogs.com/zhuluqing/p/8761293.html
Copyright © 2020-2023  润新知