分享
 
 
 

c++ primer(第四版)学习札记 9-24

王朝c/c++·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

1、ex4_22:

const char *cp = "hello";

int cnt;

while (cp) { ++cnt; ++cp; }

while (*cp) { ++cnt; ++cp; }

解释两个循环的不同

我的理解是第一个循环是判断cp指针是否为空作为循环条件的,而++cp的操作并不会让cp为空,所以循环会持续进行,直到出错(也许会是个大错误,因为都不知道会访问到内存的何处)。第二个循环是判断*cp这个字符是否为空,而随着++cp的操作,cp最终会指向"\0"而结束循环。(PS:Lippman出的题也有点小bug,整数没有初始化)

2、电子书中的一处错误:

Section 4.3中的Initializing a Dynamically Allocated Array的一个例子:

int *pia2 = new int[10] (); // array of 10 uninitialized ints

注释应该是// array of 10 initialized ints

3、常数动态分配数组必须被初始化:

const int *pci_ok = new const int[100]();

但是感觉由于必须初始化,而初始化后却又改变不了其数值,没有什么实际用途。

4、int* p = new int[n];使用这样的方式可以得到一个在运行时得到数组range的动态数组,n可以为0,但是我们并不能直接声明一个range为0的静态数组,同时,这样的动态数组指针p不能被解引用(dereference),p为一个合法的、非零指针

5、就如effective c++中所说的,有new就必须有delete,用delete [] pia;的方式来收拾动态数组占用的内存。如果没有[],编译不会出错,但是,会在运行的时候,程序可能崩溃,同时造成了内存泄露。

6、 int dimension = strlen(errorTxt) + 1;

char *errMsg = new char[dimension];

不要忘记,strlen返回的是字符串不包括"\0"的长度,而动态分配空间的时候,必须考虑进去,所以要+1

7、一般情况来说,string的效率要比C-style的string高,所以,作者推荐,如果不为兼容性考虑,首选string

8、处于兼容c的考虑,c++很容易将C-style的字符串转为string,但是直接反向转换就不可,可以通过这种方式:

const char *str = st2.c_str();

注意一点,const,c_str()返回的是const,所以这样得到的只能读,不能改变。如果要很好的使用,最好将返回的const字符串拷贝一份再使用

9、可以使用数组来初始化一个vector:

const size_t arr_size = 6;

int int_arr[arr_size] = {0, 1, 2, 3, 4, 5};

// ivec has 6 elements: each a copy of the corresponding element in int_arr

vector<int> ivec(int_arr, int_arr + arr_size);

要注意的是,这里的构造函数两个参数都是指针,在上面的例子中,分别指向数组的第一个元素以及最后一个元素。但是范围是第一个指针指向的元素以及第二个指针指向的元素的前一个元素。(共六个)

vector<int> ivec(int_arr + 1, int_arr + 4);

则表示使用数组的第二个元素到第五个元素的前一个对vector进行初始化。(总共三个元素)

10、

int *ip[4]; // array of pointers to int

有四个元素的指针数组,指向int

int (*ip)[4]; // pointer to an array of 4 ints

指向一个4个元素的int数组的指针

so confuse...

11、

typedef int int_array[4];

int_array *ip = ia;

使用typedef可以增加可读性,不过对typedef了解不多,形式有点怪怪的。总觉得这样才对:

typedef int[4] int_array;(纯属我的想法,错误的!)

第四章结束(要加油了,太慢了)

---end--- next: Chapter 5 Expression time:05-9-25 1:12am

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有