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