zoukankan      html  css  js  c++  java
  • 读书笔记:C++ Primer系列(3)—— 关于变量

    题记:

           每一个变量都有特定的类型,该类型决定了变量在内存中的大小及位置、能够存储于该内存中的值的取值范围,以及可执行的操作。

    3.1 初始化

          C++支持两种变量初始化形式:直接初始化赋值初始化。如:

                                              int  day=7;//赋值初始化形式

                                              int  day(7); //直接初始化形式

    注意:初始化与赋值两者的区别

                                    初始化:创建变量并给它赋初值;            赋值:擦除对象当前值并新值替代

    针对不同的对象,初始化方式也有说法。对于内置类型来说,直接初始化与赋值初始化没有什么区别;但对于类类型对象,有些仅可以采用直接初始化的方式。这是由于类类型对象的初始化是通过定义一个或多个构造函数来控制类对象的初始化的。

    基本内置类型:包括整型与浮点型,具体占用字节数由机器类型与编译器决定。

    3.2 初始化规则

          当我们定义变量未进行初始化时,系统会帮助我们初始化变量。这时,系统提供什么样的值取决于变量的类型,也取决于变量定义的位置。

          对于内置类型的变量是否自动进行初始化取决于变量的位置:

    •    在函数体外定义的变量都初始化为0;
    •    在函数体内定义的内置型变量不进行初始化

    3.3 声明和定义

    • 变量的定义用于为变量分配内存空间,还可以为变量指定初始值。在一个程序中,变量有且仅有一个定义。
    • 变量的声明用于向程序表明变量的类型和名字。可以通过extern关键字声明变量而不定义它。不定义变量的声明包括对象名、对象类型及类型前的extern关键字。

                          int k;//声明并定义了变量k

                          extern int k;//声明但未定义变量k(注:extern声明不是定义,在内存中也不分配空间

    注:只有定义才能分配内存空间

    如果声明有了初始化,可以认为进行了变量定义(即使使用了声明标记extern)。如

                          extern int day=7;//定义了一个整型变量day,分配并初始化了内存空间

    注:

    1. 只有当extern声明位于函数外部时,才可以进行初始化。
    2. 已初始化的extern声明被当作定义后,随后的任何该变量的定义都是不允许的。

    3.4 int char double等类型的数据所占字节数

    16位编译器 下:

                 char :1个字节

                 char*(即指针变量): 2个字节

                 short int : 2个字节

                 int: 2个字节

                 unsigned int : 2个字节

                 float: 4个字节

                 double: 8个字节

                 long: 4个字节

                 long long: 8个字节

                 unsigned long: 4个字节

    32位编译器下:

                          char :1个字节

                          char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)

                           short int : 2个字节

                          int: 4个字节

                          unsigned int : 4个字节

                          float: 4个字节 double: 8个字节

                           long: 4个字节

                          long long: 8个字节

                          unsigned long: 4个字节

    64位编译器下:

            char :1个字节

            char*(即指针变量): 8个字节

            short int : 2个字节

            int: 4个字节

            unsigned int : 4个字节

            float: 4个字节

            double: 8个字节

            long: 8个字节

            long long: 8个字节

            unsigned long: 8个字节

     

     

     

     

           

  • 相关阅读:
    Objective-C Collection was mutated while being enumerated crash
    C++ assert断言
    Objective-C 禁用NSMenu中的系统services菜单项
    django----命令
    django----admin源码流程
    django----admin
    django----利用Form 实现两次密码输入是否一样 ( 局部钩子和全局钩子 )
    django----基于Form组件实现的增删改和基于ModelForm实现的增删改
    java----面试题
    课外知识----ini
  • 原文地址:https://www.cnblogs.com/kkdd-2013/p/3480280.html
Copyright © 2011-2022 走看看