• [C++] 变量


    变量

    变量定义的基本形式:首先是类型说明符,随后紧跟着一个或多个变量名组成的列表,其中变量名以逗号分隔,最后以分号结束。

    对象(变量)是具有某种数据类型的内存空间。

    列表中每个变量名的类型都由类型说明符指定,定义时还可以为一个或多个变量赋初值。

    在同一条定义语句中,可以用先定义的变量值去初始化后定义的其他变量。

    初始化与赋值

    初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除,而以一个新值来替代。

    初始化形式

    int i = 0;
    int i = {0};
    int i(0);
    int {0};

    对于内置类型,如果我们使用列表初始化且初始值存在丢失信息的风险,则编译器将报错。(e.g.比如存在类型转换时,double to int)。

    默认初始化

    内置类型的变量未被显示初始化,它的值由定义的位置决定。定义于任何函数体之外的变量被初始化为0,。定义在函数体内的内置类型将不被初始化,一个未被初始化的内置类型变量的值是未定义的。试图拷贝或以其他形式访问该类型将引发错误。

    如果要求显示初始化则类的构造函数使用explicit关键字。

    如果类的对象没有显示初始化,则其值由类确定。

    变量声明与变量定义

    为了支持分离式编译,C++语言将声明和定义区分开来。声明使得名字为程序所知,一个文件如果想使用别处定义的名字则必须包含对那个名字的声明。而定义负责创建与名字关联的实体。

    变量声明规定了变量的类型和名字,在这一点上定义与之相同。但是除此之外,定义还申请存储空间,也可能会为变量赋一个初始值。

    变量能且只能被定义一次,但是可以被多次声明。

    如果想声明一个变量而非定义它,就在变量名前添加关键字extern,而且不要显式地初始化变量。

    注意:在函数体内部,如果试图初始化一个由extern关键字标记的变量,将引发错误。

    extern int i = 0;  // definition
    int iy;      // definition
    extern int j;    // declaration

    标识符

    C++标识符由字母、数字、下画线组成,其中必须以字母或下画线开头,标识符长度没有限制,但是对大小写字母敏感。

    变量命名规范

    C++中关于变量命名的规范:

    1:能体现变量的实际意义

    2:变量名一般采用小写字母

    3:用户自定义变量名可以以大写字母开头

    4:多个单词定义的变量名应有区分Student_loan   而不是  Studentloan

    名字的作用域

    作用域是程序的一部分,在其中名字有其特定的含义。

    同一个名字在不同的作用域中可能指向不同的实体。名字的有效区域始于名字的声明语句,以声明语句所在的作用域末端为结束。

    全局作用域

    块作用域

    嵌套作用域:作用域中一旦声明了某个名字,它所嵌套着的所有作用域中都能访问该名字。同时,允许在内层作用域中重新定义外层作用域已有的名字。

    如果函数有可能用到某全局变量,则不宜再定义一个同名的局部变量。

     Tips:

    1、变量使用之前需要先定义声明。

    2、如果在定义变量时没有指定初始值,那么变量会被默认初始化。

    3、定义在任何函数体外的变量会被初始化为0,

    4、定义在函数体内部的变量不会被初始化。

    5、类的对象未被初始化,则初值由类决定。

    6、声明:使得名字为程序所知,如果想要使用该变量,则必须实现包含其声明。声明会确定变量的名字和类型

    7、定义:创建于名字关联的实体,定义会申请存储空间,可能会赋予初始值

    8、如果想声明一个变量而不想定义它,那么可以在变量名前加extern关键字

    9、新建局部变量会覆盖同名的全局变量

    10、程序中尽量不要出现同名变量

  • 相关阅读:
    DedeCMS Xss+Csrf Getshell dedefile_manage_control.php
    dedeCMS /plus/ad_js.php、/plus/mytag_js.php Vul Via Injecting PHP Code By /plus/download.php Into DB && /include/dedesql.class.php
    phpMyadmin /scripts/setup.php Execute Arbitrary PHP Code Via A Crafted POST Request CVE-2010-3055
    Linux inode && Fast Directory Travel Method(undone)
    Linux进程自保护攻防对抗技术研究(Process Kill Technology && Process Protection Against In Linux)
    PHP Web System Optimization(undone)
    PHP Simulation HTTP Request(undone)
    Server Data Synchronization Via Linux rsync、rsync+inotify Between Load Balance Server
    Ecshop /admin/get_password.php Password Recovery Secrect Code Which Can Predict Vulnerability
    Dedecms includedialogselect_soft_post.php Upload Any Files To The Specified Directory Via Variable Not Initial Flaw Bypass Extension Defence
  • 原文地址:https://www.cnblogs.com/immjc/p/8016596.html
Copyright © 2020-2023  润新知