• C语言——概述


    很多高级语言都是从C语言衍生的

    • C++、C#、Object-C、Java、Go等

    很多系统软件都是由C语言编写的

    • 几乎所有的操作系统都是C编写的
    • 几乎所有的计算机底层应用软件都是C编写的
    • 几乎所有的编辑器都是C编写的

    1.1 C语言发展史

    F O R T R A N → A L G O L → C P L → B C P L → B → C → C + + FORTRAN\rightarrow ALGOL\rightarrow CPL \rightarrow BCPL\rightarrow B\rightarrow C\rightarrow C++ FORTRANALGOLCPLBCPLBCC++

    BCPL与B语言:精炼、接近硬件,但过于简单,无数据类型

    • 1970 年美国贝尔实验室 Ken Tompson 以BCPL为基础,设计出了很简单而且很接近硬件的B语言,并用B语言写出了第一个UNIX操作系统。但B语言过于简单,功能有限
    • 1972 年至1973 年期间,贝尔实验室 Dennis Ritchie 在B语言的基础上设计出了C语言。C语言保持B语言的精炼与接近硬件的特性,又克服了他们的缺点

    1.2 C语言标准

    • 1989年C语言标准被批准,这个版本的C语言标准通常被称为ANSI C(C89)
    • 1999年,国际标准化组织ISO又对C语言标准进行修订,在基本保留原C语言特征的基础上,针对应该的需要,增加了一些功能,命名为C99
    • 2011年12月,ANSI采纳了ISO/IEC 9899:2011标准。这个标准通常即C11,它是C程序语言的现行标准

    1.3 优点

    • 简洁性:核心内容少,只有 32 个关键字,9 种控制语句、44 种运算符

      条件语句:if…else,switch
      循环语句:while,for,do…while
      break,continue,return,goto

    • 丰富的数据类型

    • 具有低级语言的特点:与汇编语相近的功能和描述方法,如地址运算和二进制数位

      可以对硬件端口进行直接操作

    • 结构化语言,适用于大型程序模块化设计

    • 代码效率高

    • 语法限制不严,程序设计自由度大

    • 可移植性好

    1.4 算法

    通过有限步骤,明确的操作产生问题答案

    算法表示
    自然语言,传统流程图,N-S流程图,伪代码

    常用算法:枚举,递推,递归

    1.5 数据在计算机中的表示

    1.5.1 进制转换

    进制

    计数的方式,数值的表示方式

    十进制 0、1、2、3、4、5、6、7、8、9 逢十进一

    二进制 0、1 逢二进一

    • 书写格式:0b101

    八进制 0、1、2、3、4、5、6、7 逢八进一

    • 书写格式:061

    十六进制 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F 逢十六进一

    • 书写格式:0x45

    转二进制

    整数部分:除基取余,从下至上

    小数部分:乘积取整,从上至下

    1.5.2 数据编码

    计算机只能识别0和1的形式存储的

    数据在计算机内部是以 补码 的形式存储,所有的运算都是以补码存储

    • 正数的原码、反码和补码都是它的二进制

    • 负数的原码, 是将该负数的二进制最高位变为1

      负数的反码, 是将该数的原码 除了符号位 以外的 其它位取反

      负数的补码, 就是它的反码 + 1

    码制的由来

    原码的减法不正确,所以引入反码。但反码相同的数相减,得到 -0。但前面的符号没有任何意义,所以引入补码。

    1.6 C语言程序组成

    一个C语言程序由多个函数组成,每个函数有自己的功能

    一个程序有且仅有一个主函数

    • 如果一个程序没有主函数,则这个函数不具备运行能力

    • 程序运行时系统会自动调用主函数,而其他函数需要开发手动调用

    1.6.1 主函数

    int main(){
        //other code...
         return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 主函数前的int可以不写或者换成 void

    • main函数中的 return 0 可以不写

    多种写法产生原因

    • C语言最早的时候只是一种规范和标准(如C89,C11)

    • 标准的推行需要各大厂商的支持和实施,由于各大厂商的各自实施,导致实施的标准不同

    1.6.2 注释

    注释可以用来解释某一段程序或者某一行代码是什么意思,方便程序员之间的交流沟通

    a. 注释分类

    单行注释

    // 被注释内容

    • 使用范围:任何地方

    • 作用范围: 从第二个斜线到这一行末尾

    • 快捷键:Ctrl+/

    多行注释

    /* 被注释内容 \*/

    • 使用范围:任何地方

    • 作用范围: 从第一个 /* 到最近的一个 */

    c. 注意

    单行注释可以嵌套单行注释、多行注释

    // aa // vvvvvv
    // /* asdasd */
    
    • 1
    • 2

    多行注释可以嵌套单行注释

    /*
    	// asdasd
     */
    
    • 1
    • 2
    • 3

    多行注释 不能 嵌套多行注释

    /* 
    哈哈哈
         /*嘻嘻嘻*/
     呵呵呵 
    */
    
    • 1
    • 2
    • 3
    • 4
    • 5

    1.6.3 关键字

    C语言中具有特殊含义的单词

    a. 特点

    1. 全部小写

    2. 不可用作变量名、函数名等

    3. C语言一共有32个关键字

    12345678
    charshortintlongfloatdoubleifelse
    returndowhileforswitchcasebreakcontinue
    defaultgotosizeofautoregisterstaticexternunsigned
    signedtypedefstructenumunionvoidconstvolatile

    b. 分类

    基本数据类型关键字

    char:字符类型变量

    int:整型变量

    float:浮点类型变量(单精度)

    double:浮点类型变量(双精度)

    enum:枚举声明

    类型修饰符

    short:修饰 int ,表示短整型

    long:修饰 int ,表示长整型

    signed:修饰 int ,声明为有符号数据类型

    unsigned:修饰 int ,声明为无符号整数类型

    结构类型关键字

    struct:结构体声明

    union:共用体声明

    流程控制关键字

    分支结构

    if :条件语句

    else :条件语句的否定分支

    switch:开关语句

    case:开关语句的分支标记

    default:开关语句中的其他分支


    循环语句

    for:循环语句

    while:循环语句

    do...while:循环语句


    跳转语句

    continue:跳过语句

    break:跳出语句

    goto:无条件跳转

    return:返回语句,用于返回特定值


    存储类型关键字

    auto:指定为自动变量

    register:指定为寄存器变量

    static:指定为静态存储类型

    extern:指定对应变量为外部存储类型

    const:指定变量为只读变量

    volatile:指定变量为易变变量


    特殊用途关键字

    sizeof:计算数据长度

    typeof:声明类型别名

    void:空类型

  • 相关阅读:
    uni-app 5小时快速入门 4 项目运行
    Linux端口及端口监听
    面试题整理
    【算法-动态规划】最长公共子序列
    关于电脑使用的实用技巧
    java计算机毕业设计房屋租赁网站源码+mysql数据库+系统+lw文档+部署
    C++ 类型转换(static_cast、dynamic_cast、reinterpret_cast、const_cast)
    Revel框架基本使用和搭建教程
    一些docker笔记
    vue.js 生命周期
  • 原文地址:https://blog.csdn.net/qq_40479037/article/details/126124482