• C专家编程 --- 书中案例汇编与分析(持续更新中)


    switch 的 break问题

    break语句事实上跳出的是最近的那层循环语句 或 switch语句
    下图中蓝色过程的是程序员想实现的执行流程,但是红色过程是实际的执行流程
    在这里插入图片描述

    字符串数组定义时漏掉逗号导致元素数量减少

    这里"Cray"这个元素后面忘了写逗号,ANSI C引入的另一个特性是相邻的字符串常量常被自动合并成一个字符串。
    可以在书写多行信息的时候在末尾加“\”的做法,但在这里他导致available_resources数组的元素量减少!available_resources[2] 元素值错误!
    在这里插入图片描述

    C似乎比其他语言更靠近标记歧义性的曲折边缘

    sizeof(int) *p这样的代码应该解释为int的长度乘以p而不是把指针p强制转换为int然后进行sizeof操作
    在这里插入图片描述

    错误认为的优先级问题

    在这里插入图片描述
    在这里插入图片描述

    gets造成的堆栈溢出的问题

    采取fgets替代gets,因为gets无法检测缓冲区大小,超出缓冲区的数据会被放进堆栈中,导致堆栈中原先的数据被覆盖。

    在这里插入图片描述

    一种C语言设计哲学 - 对象的声明形式与它的使用形式尽可能相似

    int *p[3];
    
    *p[3]
    

    声明形式和使用形式非常相似
    好处是各种不同的操作符的优先级在”声明“和”使用”时是一样的
    缺点是操作符的优先级是C语言中另外一个设计不当且过于复杂的地方

    声明器

    在这里插入图片描述
    在这里插入图片描述

    深入逻辑元器件的编程

    使用位段去操作寄存器 嵌入式常见操作
    在这里插入图片描述

    从右到左依次压栈的屁话

    ”在调用函数时参数按照从右到左的次序压倒堆栈里“,这句话是不对的。
    参数在传递时首先尽可能地放到寄存器中(追求速度)

  • 相关阅读:
    vue.js:用户登录切换的小案例
    python计算长方形面积 青少年编程电子学会python编程等级考试一级真题解析2022年6月
    黑马瑞吉外卖之过滤器后台登录验证(详细笔记说明)
    Git 快速入门
    SAP ADM100-1.1之SAP系统架构
    ssh连接机器后执行sh命令不生效的解决方法
    【Linux学习】OpenCV+ROS 实现人脸识别(Ubantu16.04)
    SpringBoot入门
    了解一下pnpm
    centos卸载nginx
  • 原文地址:https://blog.csdn.net/weixin_43604927/article/details/127089199