C/C++ 使用心得(两点小记:指针, size()函数)

类似effective c++ 中提出了很多条如何高效使用C++的建议, 我们在自己使用语言写程序的时候有时候也会突然发现一些平时应当注意的点, 这种点就是遇到了你才长记性了, 没遇到, 那下次遇到的时候吃一次亏, 然后记住教训.

(1)  使用指针的时候永远记住检查你使用它的时候它有没有可能是NULL? 要么在使用之前做好检查确保使用它的时候一定不会是NULL指针, 要么在使用它的时候检查, 利用分支, 当它是NULL的时候怎么处理.

(2)  **千万不要拿有符号数和无符号数去比较!  **因为有符号数和无符号数一起计算的时候结果都会自动转换成无符号数, 那么好了, 你一旦结果出现负数的话, 那么转换成无符号数就变成了一个很大的正数, 于是会造成不可预计的结果. 写这一条事出有因: 前两天写了这么一条for 循环:  for(int i = 0; i < s.size() – delta; ++i) 因为s.size() 返回的是一个无符号数, 那么运行时, 当delta超过size的时候, 我本来expect这个循环不会运行直接跳过, 但是注意, 结果变成了一个无符号数的话恰恰相反, 这个循环可能会执行很久. 所以用size()函数的时候要特别小心, 建议都用int nsize = s.size() 转换一下再用. 或者用c++的迭代器或者是容器自带无符号类型比如string::size_type, 反正就是千万不要拿无符号数和有符号数比较就是了.

 

(全文完,原创文章,转载时请注明作者和出处)


(转载本站文章请注明作者和出处 烟客旅人 sigmainfy — http://www.sigmainfy.com,请勿用于任何商业用途)

Written on May 20, 2013