读C专家编程

来源:互联网 发布:nginx 执行lua脚本 编辑:程序博客网 时间:2024/05/16 18:56
第一个问题:

                主要是限定符的作用范围,个人认为赋值的时候 不要让右边的缩小了左边数值的范围!比如:const char *p 和 char *pp; 大眼一看就应该知道是 p=pp;没有警告,反过来就有了警告!!

  第二个问题:

                主要是符号问题,尽量让代码中的符号一致,尽量不要让有符号和无符号的比较,实在不行就用强制转换符!!

  第三个问题:

                switch break问题,都知道case 后面不要忘了break,但是break 中止了什么,如果case 分支中有个if语句,if语句里面有个break,case最后也有个break,这个break和if里面的break没有语句问题,有了并且if条件成立了,那么就跳出了整个case语句!!切记!!

  第四个问题:

                指针问题,函数内部的局部指针在函数返回的时候会销毁,指针指向的内容会被后面的调用给覆盖,不要把局部指针当做返回值,那会得到意想不到的结果。解决办法:

                1、直接返回字符串常量,如 return "This is return value!".这是最简单直接的办法,但是 这个必须是固定的字符串常量,不能计算字符串的内容. 

                2、使用全局声明的数组,把返回的字符串放在数组里面返回有效,但是这样任何人都能修改数组的内容. 

                3、在函数内部声明static数组变量,用来保存数据,这样可以解决任何人修改数组的内容,但是这样会使自己调用该函数的时候自动改变变量的内容,如何想保存原来的内容必须先COPY一份. 

                4、可以在函数内部动态分配内存,char *s = malloc(size); 这样既能解决任何人修改问题也能解决数据的保存,但是这样需要程序员管理内存,防止没用的内存不管(内存泄露)和正在用的内存被修改.

                5、增加函数参数一个是指向得到的数据,一个是数据的大小,在调用函数的时候用char *s = malloc(size),最后free(s);这样方便管理,是最适合的方法了!!!!

原创粉丝点击