• 读书笔记之C Primer Plus 1


    为什么阅读《C Primer Plus》第六版

    准备好好研究下redis源码,但是很久没用c语言写代码了,平时工作主要用java和js。
    所以准备重新阅读学习下c语言经典书籍:C Primer Plus。
    更好的阅读redis源码。


    读书笔记

    C语言的起源

    C语言1972年由贝尔实验室的Dennis Ritch和 Ken Thomepson(我的偶像)在开发unix操作系统时候设计的。

    C的优点:

    1. 强大的控制结构
    2. 快速
    3. 代码紧凑-程序更小
    4. 可移植到其他计算机
    
    • 1
    • 2
    • 3
    • 4

    C语言的缺点:

    1. c语言的指针使用,带来的一些编程错误难以觉察。
    2. 容易编写出让人极其费解的代码。
    
    • 1
    • 2

    C语言的应用范围:

    1. pc应用
    2. 计算机游戏
    3. 嵌入式系统
    4. 操作系统
    5. 电影特效
    6. 计算机语言
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    yups: C语言不适合做web应用开发,也不太适合用来写脚本。不适合只是因为开发效率不够高效,但不代表做不了。

    C语言概述

    一个简单demo
    //文件名 demo.c
    #include 
    int main(void)
    {
        int num;
        num = 1;
        printf("I am a simple ");
        printf("computer.\n");
        printf("My favorite number is %d because it is first.\n",num);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    mac下输入gcc demo.c,会最终编译生成a.out文件,运行./a.out,输出

    I am a simple computer.
    My favorite number is 1 because it is first.
    
    • 1
    • 2

    以上是一个比较典型的C程序了。

    1. #include 这行代码告诉编译器把stdio.h中的内容包含在当前程序中。
      stdio.h是C编译器软件包的标准部分,提供键盘输入和屏幕输出的支持。

    2. int main(void) 是C程序的执行入口(int和void是ANSI C的规范)

    3. {}是main函数内部的开始和结束。

    4. int num 声明使用一个名字为num的变量,而且num是整数int类型。

    5. num = 1 赋值表达式语句

    6. printf("I am a simple ") 调用printf函数,效果是会在屏幕中显示I am a simple

    7. printf(“computer.\n”); \n表示换行,光标移至下一行。

    8. printf(“My favorite number is %d because it is first.\n”,num); num值代替%d, %d表示是整数类型。

    9. return 0; return语句

    变量命名

    和java类似,可以用小写字母、大写字母、数字和下划线来命名,但是第一个字符必须是字母或下划线,不能是数字

    提高程序可读性的技巧
    1. 有意义的函数名和变量名。
    2. 写注释,但是定义好的变量名,可以减少一部分注释,防止啰嗦。
    3. 空行分隔概念上的多个部分。
    
    • 1
    • 2
    • 3
    多条声明

    int feet, fathoms;
    等价于

    int feet;
    int fathoms;
    
    • 1
    • 2
    关键字和保留标识符
    关键字说明
    auto声明自动变量
    short声明短整型
    int声明整型
    long声明长整型
    float声明单精度浮点型
    double声明双精度浮点型
    char声明字符型
    struct声明结构体类型
    union声明联合(共用)类型
    enum声明枚举类型
    typedef重命名数据类型
    const声明只读变量
    unsigned声明无符号类型
    signed声明有符号类型
    extern声明外部变量
    register声明寄存器变量
    static声明静态变量
    volatile说明变量在程序执行中可隐含的被改变
    void声明函数无返回值或者无参数,声明无类型指针
    if条件语句
    else条件语句否定分支(与if连用)
    switch用于开关语句
    case开关语句分支
    default开关语句中默认分支
    for循环语句
    do循环语句循环体
    while循环语句的循环条件
    continue结束当前循环,开启下一轮循环
    break跳出当前循环
    goto无条件跳转语句
    sizeof计算数据类型长度
    return子程序返回语句(可以带参数,也可以不带参数)循环条件
  • 相关阅读:
    ChatGPT 沦为了我的打工仔
    【Lua 入门基础篇(十)】文件I/O
    Java SE 8 新增特性
    TypeScript 面向对象编程
    Pretrained 预训练模型的加载与使用,为什么可以把不相关的模型用过来?
    深度学习笔记——神经网络(ANN)搭建过程+python代码
    Java本地远程断点调试(实战记录)
    USART串口协议
    [附源码]计算机毕业设计JAVA化妆品销售管理系统
    新零售商城模式与传统电商和零售的痛点的对比
  • 原文地址:https://blog.csdn.net/yuoveyu/article/details/127826916