C++ Primer 第二章 变量和基本类型

来源:互联网 发布:定时自动点击软件 编辑:程序博客网 时间:2024/05/21 08:47
  • C++新增加三个字符类型,wchar_t(宽字符16位)、char16_t(Unicode字符16位)、char32_t(Unicode字符32位)
  • 可寻址最小内存块叫做字节,一个内存块对应一个编号(地址)。该地址含义和该地址类型有关,类型确定,意味着该地址数据所占用字节数和数据如何组织这些字节确定了。
  • 切勿混用有符号和无符号类型,因为会出错,并且有符号会自动转换成无符号类型。
  • 字面值常量形式和数值决定其数据类型。024代表八进制,注意Linux系统编程里面位掩码部分使用了好多八进制。3.1415或者4.表示double类型。
  • 字符和字符串字面值。“hello”表示hello\n这个字符串的首地址且字符串末尾自动加上’\n’,用以表示字符串结尾。
  • 变量数据类型决定着变量所占用内存空间大小和布局方式、以及数据大小范围和可以参与的运算。
  • 变量初始化后可以立即使用,所以这种结构符合规则。int a = 2,b = a*5;
  • 初始化不是赋值,初始化是创建变量时候赋予一个初始值,而赋值的含义是擦去当前值,用新值代替。
  • C++支持初始化列表{},int a{0};->int a = 0;
  • 未初始化变量引发运行故障很难调试,所以我们写代码,尽量都初始化,防止一些不必要Bug出现。
  • 分清声明和定义的区别,定义只能一次,声明可以多次。声明使得名字位程序所知extern int a;定义负责创建和名字关联的实体int a = 0;
  • 建议在第一次使用变量的地方定义它,方便找到定义,方便赋予一个合理的数值。
  • 建议初始化所有指针,不清楚的时候首先nullptr解决。
  • C++11新增引用类型。引用为对象起了另外一个名字,引用也就是别名且必须初始化,必须绑定在对象上,不能是常量。int a = 2; int &refa = a; 之和a和refa表示同一个东西。
  • 防止误导的写法,int p1,p2;将指令形式与变量名连在一起。我们一起写的所有代码也都是运用这种表达形式。(char )0;
  • const int bufSize = 512;只读并且必须在定义时候初始化,bufSize仅仅在当前文件有效,所以不同文件中可以有相同名字的bufSize,相当于static一样。如果需要一个文件中的bufSize在其他文件中可用,那么其他文件声明即可。
const double a = 12.12;const double b = 13.13;const double *con_ptr;//con_ptr可以重新赋值,但是*con_ptr不能重新赋值。con_ptr = &a;//合法con_ptr = &b;//合法*con_ptr = 12.45;//不合法,因为指向内容不能修改,但是指针本身可以修改。
  • const double *ptr;指向常量的指针,必须执行一个常量的地址。ptr可以赋值,但是 *ptr不能改变。
int errNumb = 0;int *const curErr = &errNumber;//**常量指针**,指针本身必须定义时候初始化,并且赋值,始终指向一个地方。currErr不能再重新赋值,*curErr可以重新赋值。const double pi = 3.1415;const double *const pip = π//pip既不能重新赋值,*pi也不能重新赋值。*pip = 2.3;//错误,因为第一个const限定了。
  • 分清const double *con_ptr(指向常量的指针);double*const con_ptr(常量指针);const double *const con_ptr(指向常量的常量指针)的区别
typedef char *pstring;//pstring是指向char的指针const pstring cstr = 0;//cstr是指向char的常量指针。const pstring *ps;//ps是一个指针,对象是指向char的常量指针。
  • const pstring是指向char的常量指针类型。
  • auto类型声明符,根据赋值推算出变量类型。
  • decltype类型指示符,选择返回操作数的数据类型来定义其他变量。
阅读全文
0 0