读《C++ Primer(第三版)》随笔

【1】(Page171)switch-case问题

对于switch-case,普遍的误解是:只有与被匹配的case标签相关联的语句才被执行。实际上,程序从该点开始执行并继续越过case边界直到switch语句结束。例如,下面记录元音字母个数的switch程序的实现就是不正确的:

如果ch被设置为i,则程序从case 'i'后面的语句开始执行,icnt递增。但是,程序的执行并没有在那里停止,而是越过case边界继续执行,直到switch语句的结束花括号。ocnt和ucnt也都被递增。

数据测试:

读《C++ Primer(第三版)》随笔读《C++ Primer(第三版)》随笔

 【2】(Page178)for循环

for循环的语法形式:for(init-statement;condition;expression)statement;

在init-statement中可以定义多个对象,但只能出现一个声明语句。因此,所有对象都必须是相同的类型

 【3】(page182)do-while循环的条件不支持对象定义。即:不能写

因为只有在语句或语句块被执行后,条件部分才被计算。

【4】(Page220)我们能够定义的容器的类型有三个限制(实际上,它们只适用于用户定义的类类型)

1、元素类型必须支持等于操作符

2、元素类型必须支持小于操作符(其他关系操作符都是用这两个来实现的)

3、元素类型必须支持一个和缺省值

 【5】(Page278)被调用函数(inline函数与非inline函数)的函数体展开的时间

函数调用会导致两件事情发生。如果函数已经被声明为inline(内联),则函数体可能已经在编译期间它的调用点上就被展开。如果没有被声明为inline,则函数在运行时才被调用。

【6】(Page286)指针引用

我们可以声明任意内置数据类型的引用参数。例如,如果程序员想修改指针本身,而不是指针引用的对象,则可声明一个参数,该参数是指针的引用。例如,下面是交换两个指针的函数:

如下声明:

应该从右往左读:v1是一个引用,它引用一个指针,指针指向int型的对象。

实例:

运输结果:

读《C++ Primer(第三版)》随笔

【7】(Page290)把参数声明为数组的引用

当参数是一个数组类型的引用时,数组长度成为参数和实参类型的一部分,编译器检查数组实参的长度与在函数参数类型中指定的长度是否匹配。

【8】(Page291)函数参数为二二维数组

这样的参数必须指明第一维以外的所有维德长度。例如:

matrix可以等价地被声明为:matrix的类型是指向10个int的数组的指针。如同只有一维的数组参数一样,多维数组的第一维与参数类型与参数类型无关。多维数组的参数类型检查只检查多维数组实参中除了第一维之外的所有维德长度与参数是否相同。

*matrix周围的括号是必须得。因为下标优先级高。下列声明:

将matrix声明成一个含有10个指向int的指针的数组。

【9】(Page317)关于函数指针

只有当赋值操作符左边指针的参数表和返回类型与右边函数或指针的参数表和返回类型完全匹配时,初始化和赋值才是正确的。如果不匹配,则将产生编译错误信息。在指向函数类型的指针之间不存在隐式转换。

【10】(Page327)名字解析顺序

局部域内的名字解析由内向外~~~,所以在外围域中的生命被潜逃与中的同名声明所隐藏~

【11】(345)动态分配的数组的初始化问题

一般的,在空闲存储区上分配的数组不能给出初始化值集。

我们不能在这个表达式中通过指定初试值来初始化数组的元素。它必须在for循环中被初始化。

【12】(Page346)数组的动态分配

new 表达式分配的数组的维数可被指定为一个在运行时刻才被计算出来的值,如下所示:

对strlen()返回值加一是必须的。这样才能容纳C风格字符串的结尾空字符。不然会出现错误,而且很难被跟踪。因为大多数处理C分割字符串数组的例程都要遍历数组直到结尾空字符。使用C++标准库string可以避免此类错误。

注意,对于用new表达式分配的数组,只有第一维可以用运行时刻计算的表达式来指定。其他维必须是在编译时刻已知的常量值。

【13】(Page346)const对象必须被初始化,否则会产生编译错误。

原文链接: https://www.cnblogs.com/xiajun/archive/2011/07/12/2282821.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    读《C++ Primer(第三版)》随笔

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/28485

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 上午6:00
下一篇 2023年2月8日 上午6:01

相关推荐