CppPrimer4::Chapter IV
四章,很“底层”,这些东西都是在做底层得时候会用到得。而在普通编程层面,这些东西除了指针还不能舍弃外,其他得都不被建议使用。当然在指针不是必要得时候,我们也尽量不去用他。指针得灵活有的时候带来得却是灾难。
同样得,在这些熟悉得内容里面一样找到了一些需要提请自己加强注意得地方:
index type that used to array should be size_t.
(include in cstddef)
我真的不知道有多少人真的这么做了,至少在我周围得人很少做到这一点,在以前得章节也提到这个问题,需要再次注意。
Define two or more pointers in a single definition we must repeat the * symbol on each identifier.
OK,我见过很多犯这种错误得人,自己虽然没在这里犯错误,但是并不是头脑中有这个概念,只是习惯。(当然正确得习惯比头脑中得概念更有效)强化一下,在习惯得基础上加强理念。
String* p1, p2;
//this is the way will not lead to error.
String *p1, *p2;
Avoid Uninitialized Pointers.
上一条是习惯是对的,道理上没有明确。这个则是道理上明了,习惯上却做不到。最近还犯过这样的错误,我做的缓冲区管理类里面,构造函数没有把缓冲区尾指针初始化为NULL,于是那指针随意的指向了一个地址,导致缓冲区偶尔工作不正常。而且修改这个错误需要trace很多遍才watch到。必须养成定义指针的时候一定跟上初始化的习惯。
Differences between references and pointers: 1.reference must not be defined without initializing; 2. reference assigning changes the object that the reference bound, while pointer assigning rebinds the object the pointer points to .
精彩的总结每次看到都赏心悦目。
| typedef String *pstring; const pstring cstr; |
= | String *const cstr; |
这个很少用到,但是应该注意!可以通过调整const的位置置后来理解。
Use strncpy & strncat, instead of strcpy & strcat.
可以防止很多潜在的错误。
Multidimensioned array is actually an array of arrays.
Well,理解多维数组织指针的时候需要的就是这个解释。
四章内容可以说是比较难以掌握好的,我还清楚记得刚开始学习C语言时候的混乱。即使是过来人了,也常常在这里摔跤。而且就算我早已摒弃了C-style String,但是和别人写的程序交互的时候还是会用到,而且常常因为不注意而埋下潜在的运行期错误,这种错误有的时候很难找到。
吃药,睡觉,希望明天可以好起来。把Del.icio.us的js加上了,另外期待看到百度股价新的走势。
注:可能感冒晕的,昨天发的时候把IV写成IX了,惭愧惭愧,改之……
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=497905


Recent Comments