一、入门语法

1.1、基础语句

  1. int a = 1;

1.2、表达式

  1. int a = 1;
  2. int b = 2;
  3. int c = a * b;

1.3、代码块

  1. {
  2. int a = 1;
  3. }

1.4、注释

  1. //单行注释
  2. /**
  3. * 多行注释
  4. */

1.5、标准库,头文件

C 语言自带的所有这些功能,统称为“标准库”(standard library),因为它们是写入标准的,到底包括哪些功能,应该怎么使用的,都是规定好的,这样才能保证代码的规范和可移植。

不同的功能定义在不同的文件里面,这些文件统称为“头文件”(header file)。
头文件的后缀通常是.h。

  1. #include <stdio.h>

注意,加载头文件的 #include 语句不需要分号结尾

二、变量

2.1、变量名规范

2.1.1、命名规范定义

  • 只能由字母(包括大写和小写)、数字和下划线(_)组成。
  • 不能以数字开头。
  • 长度不能超过63个字符。
  • C 语言主要的关键字和保留字 不能作为变量命名

2.1.2、错误的命名

  1. $zj
  2. j**p
  3. 2cat
  4. Hot-tab
  5. tax rate
  6. don't

2.1.3、C 语言主要的关键字和保留字

  1. auto, break, case, char, const,
  2. continue, default, do, double,
  3. else, enum, extern, float, for,
  4. goto, if, inline, int, long,
  5. register, restrict, return,
  6. short, signed, sizeof, static,
  7. struct, switch, typedef, union,
  8. unsigned, void, volatile, while

2.1.4、注意

两个下划线开头的变量名,以及一个下划线 + 大写英文字母开头的变量名,都是系统保留的,自己不应该起这样的变量名。

2.2、变量的声明赋值

  1. // 变量类型 变量名称;
  2. int a;
  3. // 变量类型 变量名称 = 变量值;
  4. int a=1;
  5. // 多个变量声明
  6. int x, y, z, m, n;
  7. //多个变量声明赋值
  8. x = y = z = m = n = 3;

2.3、变量的作用域

2.3.1、介绍

作用域(scope)指的是变量生效的范围。C 语言的变量作用域主要有两种:

  • 文件作用域(file scope)
  • 块作用域(block scope)。

2.3.1、文件作用域(file scope)

文件作用域(file scope)指的是,在源码文件顶层声明的变量,从声明的位置到文件结束都有效。

  1. #include <stdio.h>
  2. int c = 1;
  3. int main(int argc, char const *argv[]){
  4. //访问方法外变量
  5. printf("方法外变量 c --> %d \n",c);
  6. return 0;
  7. }

2.3.2、块作用域(block scope)

块作用域(block scope)指的是由大括号({})组成的代码块,它形成一个单独的作用域。凡是在块作用域里面声明的变量,只在当前代码块有效,代码块外部不可见。

  1. int a = 12;
  2. if (a == 12)
  3. {
  4. int b = 99;
  5. printf("%d %d\n", a, b); // 12 99
  6. }
  7. printf("%d\n", a); // 12
  8. //printf("%d\n", b); // 出错

代码块可以嵌套,即代码块内部还有代码块,这时就形成了多层的块作用域。它的规则是:内层代码块可以使用外层声明的变量,但外层不可以使用内层声明的变量。如果内层的变量与外层同名,那么会在当前作用域覆盖外层变量。

  1. {
  2. int i = 10;
  3. {
  4. int i = 20; //覆盖外部定义的变量
  5. printf("%d\n", i); // 20
  6. }
  7. printf("%d\n", i); // 10
  8. }

三、运算符

3.1、介绍

  1. //算术运算符
  2. +:正值运算符(一元运算符)
  3. -:负值运算符(一元运算符)
  4. +:加法运算符(二元运算符)
  5. -:减法运算符(二元运算符)
  6. *:乘法运算符
  7. /:除法运算符
  8. %:余值运算符
  9. ++:自增运算符
  10. --:自减运算符
  11. //关系运算符
  12. > 大于运算符
  13. < 小于运算符
  14. >= 大于等于运算符
  15. <= 小于等于运算符
  16. == 相等运算符
  17. != 不相等运算符
  18. //逻辑运算符
  19. !:否运算符(改变单个表达式的真伪)。
  20. &&:与运算符(两侧的表达式都为真,则为真,否则为伪)。
  21. ||:或运算符(两侧至少有一个表达式为真,则为真,否则为伪)。
  22. //位运算符
  23. 取反运算符~
  24. 与运算符&
  25. 或运算符|
  26. 异或运算符^
  27. 左移运算符<<
  28. 右移运算符>>
  29. //逗号运算符
  30. x = 10, y = 20;
  31. //运算优先级
  32. //按照优先级从高到低排列
  33. 圆括号(())
  34. 自增运算符(++),自减运算符(--)
  35. 一元运算符(+和-)
  36. 乘法(*),除法(/)
  37. 加法(+),减法(-)
  38. 关系运算符(<、>等)
  39. 赋值运算符(=)

四、流程控制

4.1、IF 表达式

  1. //单个 if
  2. if (expression) {
  3. //其他语句
  4. }
  5. //多个if else
  6. if (expression)
  7. statement
  8. else if (expression)
  9. statement
  10. else if (expression)
  11. statement
  12. else
  13. statement

4.2、switch 语句

  1. //switch
  2. int d = 1;
  3. switch (d)
  4. {
  5. case 1:
  6. printf("--11");
  7. break; //跳出
  8. case 2:
  9. printf("--22");
  10. break;
  11. default: //默认执行
  12. printf("--33");
  13. }

4.3、while 语句

  1. int index = 0;
  2. while (index < 10)
  3. {
  4. /* code */
  5. printf("-->%d\n",index);
  6. index++;
  7. }

4.4、do…while 结构

  1. int index=0;
  2. {
  3. printf("i is %d\n", index);
  4. index++;
  5. } while (index < 10);
  6. printf("All done!\n");

4.5、for 语句

  1. int i, j;
  2. for (i = 0, j = 999; i < 10; i++, j--)
  3. {
  4. printf("%d, %d\n", i, j);
  5. }