• 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语言中另外一个设计不当且过于复杂的地方

    声明器

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

    深入逻辑元器件的编程

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

    从右到左依次压栈的屁话

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

  • 相关阅读:
    EtherCAT从站EEPROM分类附加信息详解:RXPDO(输入过程数据对象)
    杭电oj 2050 折线分割平面 C语言
    Python 数据可视化:Matplotlib库的使用
    Leetcode 438. 找到字符串中所有字母异位词
    (echarts)饼图封装相关总结及使用
    05ShardingSphere-JDBC水平分片
    leetcode 27. 移除元素
    Redis学习
    HTML 实现 点击按钮切换 整张界面 && 点击按钮切换局部界面
    spdlog日式库
  • 原文地址:https://blog.csdn.net/weixin_43604927/article/details/127089199