C语言基本语法1(20210925)

C语言基本语法1(20210925)

  1. 关键字

    auto
    break
    case
    char
    const
    continue
    default
    do
    double
    else
    enum
    extern
    float
    for
    goto
    if
    int
    long
    register
    return
    short
    signed
    sizeof
    static
    struct
    switch
    typedef
    union
    unsigned
    void
    volatile
    while
    
  2. 标识符

    • 由字母、数字、下划线组成
    • 第一个字符必须是字母或下划线
    • 区分大小写
  3. 常量

    1. 整数常量

      • 八进制–第一个数字是0

      • 十六进制–以0x或者0X开头

      • 常量后面加符号l或者L–long int类型

      • 常量后面加符号u或者U–undesigned int类型

    2. 浮点数常量

      • 浮点常数+e+符号+整数–科学计数法
    3. 字符常量

      常见特殊字符及其含义
      \a 声音警铃
      \b 退格
      \f 表单
      \n 换行
      \r 回车
      \t 水平制表
      \v 垂直制表
      \\ \" \' \?  对应原符号
      
    4. 字符串常量

  4. 运算符与表达式

    1. 运算符的优先级及结合方式

      优先级运算符/名称特征结合方向
      1()圆括号 []下标 ->指针引用结构体成员 .取结构体变量成员初等运算符从左到右
      2!逻辑非 ~按位取反 +正号 -负号单目运算(只有一个操作数)从右到左
      3(类型名)类型强制转换 *取指针内容 &取地址 ++自增 --自减 sizeof长度运算符单目运算(只有一个操作数)从右到左
      4*相乘 /相除 %取两整数相除的余数算数运算从左到右
      5+相加 -相减算数运算从左到右
      6<<左移 >>右移移位运算从左到右
      7>大于 <小于 >=大于或等于 <=小于或等于关系运算从左到右
      8==等于 !=不等于从左到右
      9&按位“与”位逻辑运算从左到右
      10^按位“异或”位逻辑运算从左到右
      11&&逻辑“与”逻辑运算从左到右
      12||逻辑“或”逻辑运算从左到右
      13?:条件运算三目运算从右到左
      14= += -= *= /= %= &= ……= |= >>= <<= 赋值运算从右到左
      15,逗号运算从左到右
      • 优先级1最高,优先级15最低
    2. 算术表达式

    3. 自增自减表达式

      假设v是一个可修改的变量

      • ++v:先把v的值加1,然后将v的值做为表达式的值
      • v++:先把v的值做为表达式的值,然后将v的值加1
      • --v: 先把v的值减1,然后将v的值做为表达式的值
      • v--: 先把v的值做为表达式的值,然后将v的值减1
    4. 逻辑表达式

      假设a,b是除了void类型外的任何基本数据类型,或者两者都是指针类型

      • a && b:当a和b的值都不为0时结果为1,否则结果为0(只有a不等于0时才对b求值)

      • a \|\|b:当a和b中有一个不为0时结果为1,否则结果为0(只有a等于0时才对b求值)

      • !a:当a等于0时结果为1,否则结果为0

    5. 关系表达式

      假设a,b是除了void类型外的任何基本数据类型,或者两者都是指针类型(a和b需要指向同一个数组或者同一个结构或联合的成员)

      • a<b a<=b a>b a>=b a==b a!=b
      • 条件成立时结果为1,否则结果为0
    6. 字位表达式

      假设i、j、n都是整型表达式

      • i&j:i和j执行按位与操作
      • i\|j:i和j执行按位或操作
      • i^j:i和j执行按位异或操作
      • ~i:i的补数
      • i<<n:i左移n位
      • i>>n:i右移n位
    7. 强制类型转换表达式

      假设type是一种数据类型,a是一个表达式

      • type(a):将a转换为指定的类型
    8. 逗号表达式

      假设a、b分别是两个表达式

      a, b:编译器先对a求值,然后再对b求值,表达式的结果和类型等于表达式b的结果和类型

    9. 赋值表达式

      假设v是一个可修改的变量,op是一个有对应赋值操作符的操作符,a是一个表达式

      • v = a:把a的值保存到v中
      • v op= a:表示把op代表的操作作用于v和a,然后将结果保存到v中,相当于v=v op a
    10. 条件表达式

      假设a、b、c是表达式

      • a?b:c:当a的值不为0的时候,表达式等于b,否则等于c(只对b或者c中的一个求值)
    11. sizeof运算符

      假设type是一种数据类型,a是一个表达式

      • sizeof(type):表达式的值等于容纳指定数据类型的值所需要的内存字节数
      • sizeof(a):表达式的值等于保存表达式a的结果所需要的内存字节数
    12. 数组的基本操作

      假设a为含有n个元素的数组;i为整型数的表达式;v为表达式

      • a[0]:数组a的第一个元素
      • a[n-1]:数组a的最后一个元素
      • a[i]:数组的第i+1个元素
      • a[i]=v:把表达式v的结果值保存到a[i]中
    13. 结构的基本操作

      ①x:是一个可以修改的变量,其类型为struct s ;②y:是一个类型为struct s的表达式 ;

      ③m:是类型struct s的一个成员变量的名字 ; ④v:是一个表达式

      • x:引用整个结构,其类型为struct s
      • y.m:引用结构变量y的成员变量m,其类型为m的类型
      • x.m = v:将表达式v的值保存到结构变量x的成员变量m中,其类型为m的函数
      • x = y:将y的值赋给x,结果类型为struct s
      • f(y):调用函数f()并将结果变量y的内容作为参数传递给该函数。在函数f()内部,形式参数的类型必须是struct s
      • return y:返回结构变量y的内容,函数的返回值必须被声明为struct s类型
    14. 指针的基本操作

      ①x:是一个类型为t的变量 ; ②pt:是一个指向t类型变量的指针变量 ; ③v:是一个表达式

      • &x:生成一个指向x的指针,表达式的类型为指向t的指针
      • pt = &x:使得指针pt指向x,表达式的类型为指向t类型变量的指针
      • pt = NULL:将指针pt设置为空指针
      • pt == NULL:判断pt是否为空指针
      • *pt:取得指针pt指向的值,表达式类型为t
      • *pt = v:将表达式v的值保存在pt所指向的位置中,表达式的类型为t
    15. 指向数组的指针

      ①a:是一个数组,其元素类型为t ; ②pa1:是一个指向t的指针变量,指向数组a中的某个元素

      ③pa2:是一个指向t的指针变量 ; ④v:是一个表达式 ; ⑤n:是一个整型表达式

      • a&a[0]:产生一个指向数组第一个元素的指针
      • &a[n]a+n:产生一个指向数组第n号元素的指针,类型为指向t的指针
      • *pa1:引用pa1指向的元素,类型为t
      • *pa1 = v:将表达式v的值保存在pa1指向的位置,表达式类型为t
      • ++pa1:将pa1指向数组a的下一个元素,表达式类型为指向t的指针
      • --pa1:将pa1指向数组a的前一个元素,表达式类型为指向t的指针
      • *++pa1:将pa1指向数组a的下一个元素,然后引用该元素,表达式d的类型为t
      • *pa1++:应用pt所指的元素,表达式的类型为t,然后将pa1指向数组a的下一个元素
      • pa1+n:生成一个指针,该指针指向数组a中pa1所指向元素后面的第n个元素
      • pal-n:生成一个指针,该指针指向数组a中pa1所指向元素前面的第n个元素
      • *(pa1+n) = v:将表达式v的值保存在pa1+n所指向的位置,表达式的类型为t
      • pa1<pa2:判断pa1指向的元素在数组中的位置是否在pa2所指元素的前面,表达式的类型为整数
      • pa2-pa1:数组a中pa1所指向的元素和pa2所指向的元素之间的元素个数,表达式的类型为整数
      • *(a+n),a[n]:获取数组a的第n号元素的值,表达式的类型为t
    16. 指针结构的指针

      ①x:指向结构的指针; ②ps:一个其类型为指向struct s的指针变量 ;

      ③m:是类型struct s的成员变量,其类型为t ; ④v:是一个表达式

      • &x:产生一个指向x的指针,该指针类型为“指向struct s的指针”
      • ps=&x:将指针ps指向x,表达式的类型为“指向struct s的指针”
      • ps->m(*ps).m:引用ps所指向的结构的成员变量m,表达式的类型为t
      • ps->m = v:将表达式v的值保存在ps所指向的结构的成员变量m中,表达式的类型为t
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值