day01 2021-9-21

1. 数据类型

  • 声明变量不分配内存,定义时再分配;声明与定义的区别在于是否分配内存,声明可以多次(extern关键字),定义只能一次。C++变量的声明和定义+C++ 声明与定义+声明、定义本质的区别:有无内存的分配+C/C++ 中变量的声明与定义+深入理解C系列:不同类型变量的变量名和内存间的关系 - 博客园
  • 声明成员变量的时候进行了初始化操作,没有分配内存。(因为类不是真实存在的对象,类的定义过程是对类的一个“声明”,并不会为其分配内存,而它必须通过构造函数才能将类实例化,这样类的数据成员才会被分配内存。至于成员变量在声明的时候进行初始化操作,我猜测应该是通过合成的默认构造函数进行成员初始化工作。依据C++ primer 第五版中这样一句话:“如果类包含有内置类型的成员,则只有当这些成员全都被赋予了类内的初始值时,这个类才适合于使用合成的默认构造函数”。这么说类内初始值是为类获得默认初始化服务的。关于C++ 类中数据成员在定义时初始化问题
  • 当局部变量被定义时,系统不会对其初始化,用户必须自行对其初始化。定义全局变量时,系统会自动初始化,数值类初始化为0,其他初始化为NULL。总结:定义局部变量必须初始化。
  • 数据类型存在意义:给变量分配合适的内存空间,不造成资源浪费。
  • 宽字符型wchar_t: 实际上的空间和short int一样,typedef short int wchar_t。
  • short < int <= long <= long long
  • 实型(浮点型):1. 单精度float,2. 双精度double。这两种实型的区别在于表示范围不同(有效数字长度)。
  • 	float f1 = 3.1415926f;
    	double f2 = 32.14159263243;
    	cout << f1 << endl;
    	cout << sizeof(f1) << endl;
    	cout << f2 << endl;
    	cout << sizeof(f2) << endl;
  • 制表符 '\t': 默认8个空格(一字节是八位)
  • 如果两个字符串的实际内容相同,只是差1个\0,那就将字符串都转换成const char *,然后调用C语言中比较两个字符的 函数strcomp(str.c_str(),str1.c_str())即可
  •