《C++ Primer Plus》笔记>注意点小结

小注意点:

  1. wcha_t 类型为宽字符类型,能存储较大的字符,相应io需要使用 wcin 和 wcout。
  2. unsigned char 和 signed char 的区别在于能存储字符编码的范围不同,无符号char类型可以存储0-255。
  3. cout.setf(ios.base::boolalpha);
    这条语句的效果是显示判断语句的返回值为布尔值。
  4. new 和 delete 应当一起使用来避免内存泄漏。
  5. x = 100 、x ++ 等是判定表达式,具有返回值。
  6. for (int i=0;i;i++) // 在循环结束后变量 i 会消失。
  7. a++使用原值,++a使用增加后的值。
  8. While递增小技巧:
while (a++ < 10)
        cout << a << endl;
// 这确保了先比较 a<10 ,再对 a 进行递增。
  1. 可以将递增运算符用于指针。
double arr[5] {1.2, 37.2, 8.1, 3.9, 0.4};
double *pr = arr;
pr++; 
  1. {int x;} // 定义变量的生存周期为它外面一层花括号
  2. EOF不是有效的字符编码(-1),很多系统的char类型是无符号的,所以测试EOF时需要将返回值赋给 int 变量,而不是 char 变量。
  3. 在输入后用 if 语句判断 cin 输入异常可以用于跳出:
if (!cin){ // 如果上面的输入非法,则执行下面的代码块
        cin.clear(); // 重置输入,删除错误
}
cin.get();

副作用和顺序点:
副作用指的是计算表达式时对某些东西,比如存储在变量中的值进行了修改。
顺序点是程序执行过程中的一个点,在这个点处,进入下一步之前讲确保对所有的副作用都进行了评估。C++中,所有的分号就是一个顺序点。
y = (4 + x++) + (6 + x++)
这个表达式中,无法保证x++是在何处进行。

字符串的比较:
字符数组:
C++中字符串代表着存储这一字符串的地址,所以不能直接比较。应当使用<cstring>中的 strcmp() 函数。相同返回零,第一个字符串排在第二个之前则返回负,否则返回正。
关系运算符可以用来比较字符。
srting类比较:
可以用关系字符串来进行比较,因为类函数重载了这些运算符。

基于范围的 for 循环(C++11):
用于遍历数组或容器类,对其中的元素执行相同的操作。

vector<int> prices (5) = {1, 2, 3, 4, 5} 
for (int x : prices)
        cout << x << endl;
for (int &x : prices)
        x += 1; // &x是引用变量,这样可以修改x
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 s...
    JaiUnChat阅读 1,675评论 0 7
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,474评论 3 44
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,539评论 1 51
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,767评论 18 399
  • 今天有幸参加了学院的毕业晚宴。 起初只把这场晚宴当做消遣娱乐来看待,而后来我发现我错了,这场晚宴是学长学姐们都自己...
    学徒浩楠阅读 536评论 1 6