C语言cheatsheet

源文件

  • 文件后缀: .c
  • c语言程序构成:变量 + 函数
  • C语言程序入口:main函数
  • 包含文件: 将指定的文件内容插入. 例子: #include "mylib.h"
  • 文本替换: #define 名字 替换文本
  • 注释: 单行注释用 // ,跨行注释用 /* 注释内容 */

数据类型

  • 基本数据类型
    • char:ascii字符
    • int,long,short,signed,unsigned
    • float,double
    • _Complex,_Imaginary:复数和虚数
    • _Bool:布尔类型
  • 衍生数据类型
    • 数组,结构,联合
  • 指向数据类型的指针
  • 返回数据类型值的函数

数据类型:char(ascii单字符)

  • char: 取值范围可能为-128-127或0-255, 不能保证涵盖EOF对应的-1, 所以char变量应该声明为int
  • char放在单引号内,也可以用整数直接表示
  • 长度为1字节(byte,8位)的ASCII值,Linux下查看命令 man ascii
  • 128个字符中,0至31,127 为控制字符,其他为非控制字符
  • \X 表示C语言中的转义字符:仅仅是为了便于人类识别

ASCII值与转义字符

       Oct   Dec   Hex   Char                        Oct   Dec   Hex   Char
       ────────────────────────────────────────────────────────────────────────
       000   0     00    NUL '\0' (null character)   100   64    40    @
       001   1     01    SOH (start of heading)      101   65    41    A
       002   2     02    STX (start of text)         102   66    42    B
       003   3     03    ETX (end of text)           103   67    43    C
       004   4     04    EOT (end of transmission)   104   68    44    D
       005   5     05    ENQ (enquiry)               105   69    45    E
       006   6     06    ACK (acknowledge)           106   70    46    F
       007   7     07    BEL '\a' (bell)             107   71    47    G
       010   8     08    BS  '\b' (backspace)        110   72    48    H
       011   9     09    HT  '\t' (horizontal tab)   111   73    49    I
       012   10    0A    LF  '\n' (new line)         112   74    4A    J
       013   11    0B    VT  '\v' (vertical tab)     113   75    4B    K
       014   12    0C    FF  '\f' (form feed)        114   76    4C    L
       015   13    0D    CR  '\r' (carriage ret)     115   77    4D    M
       016   14    0E    SO  (shift out)             116   78    4E    N
       017   15    0F    SI  (shift in)              117   79    4F    O
       020   16    10    DLE (data link escape)      120   80    50    P
       021   17    11    DC1 (device control 1)      121   81    51    Q
       022   18    12    DC2 (device control 2)      122   82    52    R
       023   19    13    DC3 (device control 3)      123   83    53    S
       024   20    14    DC4 (device control 4)      124   84    54    T
       025   21    15    NAK (negative ack.)         125   85    55    U
       026   22    16    SYN (synchronous idle)      126   86    56    V
       027   23    17    ETB (end of trans. blk)     127   87    57    W
       030   24    18    CAN (cancel)                130   88    58    X
       031   25    19    EM  (end of medium)         131   89    59    Y
       032   26    1A    SUB (substitute)            132   90    5A    Z
       033   27    1B    ESC (escape)                133   91    5B    [
       034   28    1C    FS  (file separator)        134   92    5C    \  '\\'
       035   29    1D    GS  (group separator)       135   93    5D    ]
       036   30    1E    RS  (record separator)      136   94    5E    ^
       037   31    1F    US  (unit separator)        137   95    5F    _
       040   32    20    SPACE                       140   
       041   33    21    !                           141   97    61    a
       042   34    22    "                           142   98    62    b
       043   35    23    #                           143   99    63    c
       044   36    24    $                           144   100   64    d
       045   37    25    %                           145   101   65    e
       046   38    26    &                           146   102   66    f
       047   39    27    '                           147   103   67    g
       050   40    28    (                           150   104   68    h
       051   41    29    )                           151   105   69    i
       052   42    2A    *                           152   106   6A    j
       053   43    2B    +                           153   107   6B    k
       054   44    2C    ,                           154   108   6C    l
       055   45    2D    -                           155   109   6D    m
       056   46    2E    .                           156   110   6E    n
       057   47    2F    /                           157   111   6F    o

       060   48    30    0                           160   112   70    p
       061   49    31    1                           161   113   71    q
       062   50    32    2                           162   114   72    r
       063   51    33    3                           163   115   73    s
       064   52    34    4                           164   116   74    t
       065   53    35    5                           165   117   75    u
       066   54    36    6                           166   118   76    v
       067   55    37    7                           167   119   77    w
       070   56    38    8                           170   120   78    x
       071   57    39    9                           171   121   79    y
       072   58    3A    :                           172   122   7A    z
       073   59    3B    ;                           173   123   7B    {
       074   60    3C    <                           174   124   7C    |
       075   61    3D    =                           175   125   7D    }
       076   62    3E    >                           176   126   7E    ~
       077   63    3F    ?                           177   127   7F    DEL

命令行输出函数:printf

printf("Hello World");

命令行用户输入函数:scanf()

scanf("format specifier",variable_name);

字符流输入输出函数: getchar(),putchar()

  • getchar每次只读取一个字符,执行过程: 输入设备->内存缓冲区->getchar函数
  • 输入换行符时,getchar开始从内存缓冲区依次读取每个字符,包括换行符\n
  • getchar原型:int getchar(void), 保存getchar值的变量需要声明为int类型防止出错
  • 如果输入缓冲区非空,getchar会读入垃圾字符

整数

  • 整数除法舍位:直接舍弃小数部分,不会四舍五入
#include <stdio.h>

int main() {
    int c = 4 / 5;
    printf("%d\n", c);//0
}

数据结构:字符串

  • 双引号内的字符序列:字符串常量

DATA TYPES: Name! ! Size Description char! ! 1 byte an ASCII value: e.g. ‘a’ (see: man ascii) int/long 4 bytes a signed integer: e.g. 97 or hex 0x61, oct 0x141 long long 8 bytes a longer multi-byte signed integer float! ! 4 bytes a floating-point (possibly fractional) value double!! 8 bytes a double length float char, int, and double are most frequently and easily used in small programs sizeof(double) computes the size of a double in addressable units (bytes) Zero values represent logical false, nonzero values are logical true. Math library (#include , compile with -lm) prefers double.

样板代码

#include <stdio.h>

int main(){
    return 0;
}

关键字

  • 程序结构
    • 条件:if,else
    • 循环:for,while,do,continue,break
    • 开关:switch,case,default
    • 跳转:goto
  • 未分类
    • void: 声明函数无返回值或无参数,声明无类型指针,表示
    • auto 声明自动变量
    • struct 声明结构体变量或函数
    • union 声明共用数据类型
    • enum 声明枚举类型
    • typedef 用以给数据类型取别名
    • const 声明只读变量
    • extern 声明变量是在其他文件正声明
    • register 声明寄存器变量
    • static 声明静态变量
    • volatile 说明变量在程序执行中可被隐含地改变
    • sizeof 计算数据类型长度
    • return 子程序返回语句(可以带参数,也可不带参数)循环条件



书籍&参考

© Licensed under CC BY-NC-SA 4.0

Stay hungry. Stay foolish.——史蒂夫.乔布斯

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!