编程注意事项及技巧(C/C++)

时间:2021-05-30
本文章向大家介绍编程注意事项及技巧(C/C++),主要包括编程注意事项及技巧(C/C++)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

编程习惯

  1. 每写一段程序就测试程序是否正确。总之就是写一段验证一段
  2. 做除法运算时,一定要检测分母为零的情况
  3. 尽量多使用小于符号 便于程序理解和程序的规范(比如二分查找)

编程技巧

  1. 如果数字大的离谱,说明有技巧或者规律

  2. 循环时使用位运算可以大大提高速度

  3. 除法用辗转相除法

  4. 指针:p+i a+i &a[i]等价

    (p+i) (a+i) a[i]等价

    p[i] (p+i) 等价

    a[i] [j],* (*(p+i)+j)等价于p [i] [j]

  5. char *p p="hello"(当赋值后,值不能再被修改。但是可以对p重新赋值)

  6. &a相当于管辖范围上升了一级 *a相当于管辖范围下降了一级

  7. int sum(int a[]) 将形参数组名作为指针变量来处理

  8. const int *pp被赋值后p所指向的值不能再被修改,但是p可以被重新赋值

  9. int *function(int sum) 返回指针的函数。必须确保返回的地址有意义,返回全局变量的地址,不是非全局变量,返回静态局部变量,而非动态

  10. C语言中每一个函数都有地址

  11. 算数组个数:sizeof(a)/sizeof(a[0])

  12. 定义结构体的时候,里面的变量可以不能初始化。因为定义结构体时,并未给其分配内存,所以初值是无法存储的

  13. 打表,就是把各个情况的答案列举出来,然后对应输出来

  14. 注意:前序遍历的结果使用堆栈改变根节点和左子树的输出顺序后,前序遍历的结果成了中序遍历。因为堆栈交换了根节点和左子树的输出顺序,当然也能交换左右子树的输出顺序等其他树输出的顺序

  15. C/C++库中,qsort比较函数的返回值是intsort是返回bool

  16. 由于结构体内存在next指针,而申请结构体空间后同时定义了next指针,此时next指针未指向任何空间,在测试时可能导致错误

  17. 参数的传递是将实参的值赋给形参。然而对于数组来说却是一个例外,因为数组的数据太多了,将其一一赋值既麻烦又浪费空间,所以数组作为参数传递给函数的只是数组首元素的地址,函数在需要用到后面元素时再按照这个地址和数组下标去查找

  18. C语言中正无穷大,头函数:#include <limits.h>,无穷大 INT_MAX,无穷小 INT_MIN文献参考

  19. 当用多重循环枚举答案时,定义一个标志并且设置为循环条件。一旦找到循环条件不成立就退出所有循环

  20. 求素数:筛法(最快)

  21. 三目运算符: c=a>b?a:b

字符串

  1. %c会读取任何字符,包括换行和回车。其他格式输入,如果空格出现在前面,会被摒弃掉
  2. 字符前面有回车,一定要先用getchar()把回车吸收掉
  3. 尽量不要使用getchar()
  4. 字符串的处理一定要注意:完了之后要在最后一个元素手动加一个‘\0’
  5. 对于字符数组而言,数组名可以直接打印出数组里面的全部字符。如果指针不是值得首元素,那么将打印指针所指向的字符以及后面全部的字符
  6. int atoi(char* s) 字符串转换成整型数
  7. strcmp比较字符串时与最后的‘\0’无关
  8. 使用strlen计算字符串长度时,‘\0’它不算进去

原文地址:https://www.cnblogs.com/tzfs/p/14828975.html