Allocation of static, const, char, heap area and stack area

core

Heap area-wait for member variables (for example)-arbitrary space, with different values
Stack area-local variables (for example)-the value of the corresponding space is erased, and the new value is attached

Head function

class int_string
{
    
    
public:
    int_string();

    const int fixed_int = 1;

    //静态成员变量——当前源文件有效;成员变量——当前的定义的函数有效;全局变量——全部源函数;
    //加入const的变量就是常量,不可以再被初始化
    //正常来说const就够定义二维数组的长度,但是static是定义在类里面的,不是定义在对象里的;
    //程序初始化的时候会先初始化类里的变量,之后在初始化对象里的变量
    //程序是一行一行的执行(调用除外),但是编译器初始化变量并不是逐行进行的,是有选择的初始化
    //static const不能省略,因为下面的数组对应的数组长度必须是static const类型的
    static const int array_sizelist_2 = 5;
    static const int array_size_2 = 3;//必须加const


    char name_2[array_size_2];
    char name_two_2[array_size_2][array_sizelist_2];

    int stack_a;

private:
    int ifprivate_show = 1;
};

Source function

int_string::int_string()
{
    
    

    int a;
    int b, c ,d;//验证可以一起定义,
    qDebug() << "a" << a << b << c << d;//栈区,可以打印出值

//    fixed_int = 5;//报错,const使变量变成了常量,不可以再赋值
    qDebug() << "fixed_int为:" << fixed_int;

    //栈区定义的变量,程序随机分配空间,但都是把空间对应的值抹去,再附上新值——每次输出的值都一样
    int a_1;
    qDebug() << "a_1" << a_1 ;

    //堆区定义的变量,程序随机分配空间,值不抹去;但是栈去会分配好,再附上新值——每次输出的值都不一样
    qDebug() << "stack_a为:" << stack_a;

    //局部变量是可以用const,但是如果是在成员变量中,必须使用static const,不然就会报错
    const int array_sizelist = 5;
    const int array_size = 3;//必须加const

    char name[array_size];
    char name_two[array_size][array_sizelist];

    qDebug() << "name为:" << name;             //局部变量,栈区,打印为空,默认初始化,不分配空间
    qDebug() << "name_two为:" << name_two;     //局部变量,栈区,有值一样,默认初始化,分配空间
    //有值,但是每次输出的值是一样的,程序为它分配空间,肯定是随机分配的空间,但都是把空间对应的值抹去,再附上新值


    qDebug() << "name_2为:" << name_2;         //静态成员变量,堆区,打印为空,默认初始化,不分配空间
    qDebug() << "name_two_2为:" << name_two_2; //静态成员变量,堆区,有值不一样,默认初始化,分配空间
    //有值,值不一样,程序随机分配空间,值不抹去

    char char_a[8] = {
    
    'a','b','c','\0','d'};
    qDebug()  << "数组a为:" << char_a;
    char char_b[8] = {
    
    'a','b','c','d','e','\0'};
    qDebug()  << "数组b为:" << char_b;

}
a 0 8650000 0 32
fixed_int为: 1
a_1 0
stack_a为: 1851748703
name为: 
name_two为: 0x83b8e6
name_2为: 
name_two_2为: 0x2ea0a47
数组a为: abc
数组b为: abcde

Guess you like

Origin blog.csdn.net/qq_43641765/article/details/111193152