龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

《C++ primer plus》读书笔记(一)(2)

时间:2014-10-17 02:11来源:网络整理 作者:网络 点击:
分享到:
21、原始(raw)字符串——原始字符串中,\n不表示换行符,如: 默认定界符 ( 和 ) cout R"(don't use "\n" ,OK)" '\n'; 输出:don't use "\n" ,OK 自定义定界符 +*( 和 )+* co

21、原始(raw)字符串——原始字符串中,\n不表示换行符,如:    默认定界符 ( 和 )  cout << R"(don't use "\n" ,OK?)" << '\n'; 输出:don't use "\n" ,OK?

  自定义定界符 +*( 和 )+*  cout << R"+*("(don't use "\n" ,OK?)")+*" << '\n'; 输出:"(don't use "\n" ,OK)"

22、结构——

  (1)、定义:  struct  man { char name[20];  double weight;  int age; };

  (2)、声明,允许省略关键字struct,如:  man mike;

  (3)、初始化:  man mike {"mike", 56.2, 22};

  (4)、使用成员运算符(.)来访问各个成员。

  (5)、同时定义结构和创建变量:  struct  man { char name[20];  double weight;  int age; } mike = {"mike", 56.2, 22}, jim ;

  (6)、还可以声明匿名结构:  struct { int x, int y } point ;

23、结构中的位字段——指定占用特定位数的结构成员,如:  struct my_bit { unsigned int x : 4;  bool  y : 1; };

24、外部声明——函数外部的声明。C++不提倡使用外部变量,提倡使用外部声明。

25、共用体——

  一种数据格式,能够存储不同的数据类型,但只能同时存储其中的一种类型,常用于节省内存。如:  union id { long long_id ;  char char_id; };

  (1)、由于共用体每次只能存储一个值,其长度为最大成员的长度。

  (2)、匿名共用体没有名称,其成员将成为位于相同地址处的变量,每次只有一个成员是当前成员。

26、枚举——

  另一种创建符号常量的方式,可以代替const。如:  enum spectrum { a , b , c , d , f };

  (1)、默认情况下,a、b、c、d 、f 作为符号常量,对应0到4。

  (2)、对于枚举,只定义了赋值运算符,并没有定义算术运算。

  (3)、只能将定义枚举时使用的枚举量赋给枚举变量。

  (4)、可以使用赋值运算符显式设置枚举量的值。如:  enum bits { first , zero = 0 , two = 200 ,three , four };  //这里three的值为201, first 的值为0

  (5)、枚举的取值范围。bits的最大值是202,大于它的最小的2的幂为256,所以bits的取值范围为0—255  

  (6)、通过强制类型转换,增加了可赋值给枚举变量的合法值,只要在取值范围内。如:  bits b = bits(240);

27、指针——

  指针是一个变量,存储的是值的地址,而不是值本身。

  (1)、地址运算符(&)可以获得变量的位置(存储地址)。

  (2)、指针,将地址看作指定的量,将值看作派生量。指针名表示地址。

  (3)、*运算符被称为间接值(解除引用)运算符。用于指针可以得到指针地址存储的值。

  (4)、声明:  int * a;  // *运算符两边的空格是可选的  int * b , c;  // 创建指针b和int变量c,每一个指针都需要一个*

  (5)、初始化:  int * a = &b;  // 将指针a的值设为&b

  (6)、一定要在对指针使用解除引用运算符(*)之前,将指针初始化为一个确定的、适当的地址。  

  (7)、将数字赋值给地址:  int * pt = (int * ) 0x8000000;

  (8)、分配内存:  int *pn = new int;  //从堆(heap)或只有存储区(free store)的内存区域分配内存。

28、数组——

  (1)、编译时给数组分配内存被称为静态联编,程序运行时选择数组长度被称为动态联编。

  (2)、创建动态数组:  int * p = new int [10]; // p为该元素第一个元素的地址

  (3)、释放数组:  delete [] p;  // 只能释放new分配的内存;  不能delete两次;  对空指针delete安全;  数组用delete [] 释放。

  (4)、不能使用sizeof运算符来确定动态分配的数组包含的字节数。

  (5)、使用数组:  p[0]为第一个元素,p[1]是第二个。  // C++内部使用指针来处理数组,p[1]被看作 *(p+1)

  (6)、p = p + 1;  // 指针变量加1后,增加的量为它指向的类型的字节数。

  (7)、多数情况下C++将数组名解释为数组第一个元素的地址。

精彩图集

赞助商链接