一、C概述

1.C语言介绍

  • 创始人:丹尼斯 · 里奇
  • C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发
  • 1983年美国国家标准局(American National Standards Institute,简称ANSI)成立了一个委员会,开始制定C语言标准的工作

2.C语言优缺点

  • 简单紧凑、灵活方便
  • 运算符、数据类型丰富
  • 允许直接访问物理地址
  • 生成目标代码质量高
  • 可移植性好
  • 对数据的封装性不高,有数据安全隐患
  • 语法限制不太严格(数组下标越界不做检查等)

3.C语言程序结构特点

  • C语言书写格式自由,可以在一行写多条语句,一条语句也可以写在多行
  • 一个C程序可以有多个函数,但有且仅有一个名为main的主函数。既是程序的起点又是终点
  • 每条语句的末尾必须有分号,分号是语句结束的标志
  • C语言严格区分大小写,大小写表示完全不同的意思,大写字母一般用作符号常量
  • C语言可以添加注释,来提高程序的可读性;注释可以放在程序任意合适的位置,但注释不可以嵌套使用

4.C程序编程步骤

① 源程序(*.c)——>② 目标程序(*.obj)——>③ 可执行程序(*.exe)

  • ①->②:编译:检查语法错误
  • ②->③:链接:链接系统函数

5.第一个C程序

#include <stdio.h>
int main(){
	printf("Hello World!\n");
	return 0;
}

二、C基础语法

1.注释

// 这是单行注释

/*
这是多行注释
*/

2.数据类型

  1. 基本类型
    • 字符型(char)
    • 整形(short、int、long)
    • 实型
      • 单精度型(float)
      • 双精度型(double)
    • 枚举类型(enum)
  2. 构造类型
    • 数组类型([ ])
    • 结构体类型(struct)
    • 共用体类型(union)
  3. 指针类型(*)
  4. 空类型(void)

整型和字符型的存储大小及表示范围

数据类型 存储大小 表示范围
char 1 -128~127 或 0~255
unsigned char 1 0~255
signed char 1 -128~127
short 2 -32768~32767
unsigned short 2 0~65535
int 2或4 \
unsigned int 2或4 \
long 4 \
unsigned long 4 \
float 4 \
double 8 \

补充

  • signed和unsigned只能用来形容int和char
  • 整数在内存中按补码形式存储
  • 小数在内存中按指数(尾数+阶码)形式存储
  • 字符型在内存中按ASCII码形式存储

3.标识符及命名规则

组成:数字(0~9)、字母(a~z、A~Z)、下划线 ___
规则:
- 不能以数字开头
- 不能与关键字相同
- 尽量做到 “见名知意”

分类:
- 关键字
- 预定义标识符
- 用户自定义标识符

4.常量与变量

4.1、常量

含义:在程序运行期间,其值不能改变的量

  1. 整形常量
    • 十进制:27
    • 八进制:以0开头。eg:027
    • 十六进制:以0x或0X开头。eg:0x27
  2. 浮点型常量
    • 十进制形式:eg:12.34、-2.5
    • 指数形式:eg:123.45 = 1.2345e2/1.2345E2
      • 规则:e前e后必有数,e后必须为整数
  3. 字符型常量
    • 用一对单引号括起来的单个字符:‘A’、‘0’
    • 转义字符:也代表一个字符(\后面必须有内容,不能单独出现)
      • ‘\n’:回车换行
      • ‘\t’:水平制表符
      • ‘\v’:垂直制表符
      • ‘\ddd’:一个字符(3位八进制数)
      • ‘\xhh’:一个字符(2位16进制数)
  4. 字符串常量
    • 用一对双引号括起来的字符序列
    • 只有一对双引号,里面什么都没有,也是可以的,叫空串,内存中长度为1。因为每个字符串默认有一个结束符号 ‘/0’
  5. 符号常量
    • #define 符号常量 常量
    • #define PI 3.14
    • 结尾无分号,不是语句
  6. const常量(只读变量)
    • 也是一种变量(常变量),但是值不能被改变,整个作用域中都保持固定
    • const int MaxNum = 100;这样MaxNum的值就不能被修改了,任何对MaxNum赋值的行为都将引发错误
    • 由于const常量一旦被创建后其值就不能再改变,所以cosnt常量必须在定义的同时赋值
  7. 枚举类型
    • 枚举类型是一个命名为整型常量的集合,是#define的替代
    • 格式:enum 枚举名 { 枚举元素表 } 枚举变量表
    • 枚举元素是按常量处理的,如果没有初始化,则第一个枚举元素的值为0,第二个为1,以此类推
    • 枚举元素的名字只能是符号,其值只能是整数(不能是字符串)
      enum Weekday {
      MONDAY,     // 默认值为0
      TUESDAY,    // 默认值为1
      WEDNESDAY,  // 默认值为2
      THURSDAY,   // 默认值为3
      FRIDAY,     // 默认值为4
      SATURDAY,   // 默认值为5
      SUNDAY      // 默认值为6
      } week;
      
      enum Colors {
      RED = 10,
      GREEN = 20,
      BLUE = 30
      };
      

4.2、变量

含义:编写程序时尚未确定,且在程序运行期间其值可以发生变化的量

  1. 变量的定义
    • 数据类型 变量名
    • 例如:int a;float b,c;char c;
  2. 变量的赋值
    • 变量名 值
    • 例如:a = 10;第一次赋值称为初始化,后面变量的值可以不断的进行修改
  3. 注意事项
    • 不能重复定义同一个变量
    • 可以将一个变量的值赋值给另外一个变量
    • 变量的作用域是从定义变量的那一行代码开始

5.运算符与表达式

6.位运算

指以二进制为对象的运算,可以对内存的基本单位“字节”按二进制位进行操作

  1. 按位取反 ~
    • 形式:~a
    • 功能:将a的各个二进制位取反
    • 示例:~13 = ~(00001101) = 11110010
  2. 按位与 &
    • 形式:a & b
    • 功能:将a和b按二进制位一一进行与运算
    • 示例:65 & 66
    • 用途
      • 清零:例如a=11011010,b=11110000,那么a&b的结果是11010000,相当于把a的低4位屏蔽,高4位不变
      • 取一个数中的某位数:若想要把一个数的某位取出来,可以把其他位清零,把需要取出来的位和“1”相与,不需要取出的位和“0”相与
  3. 按位或 |
  4. 按位异或 ^
  5. 左移 <<
  6. 右移 >>
  • 除了按位取反运算之外,其他运算均为双目运算符
  • 参加位运算的对象只能是整型或字符型数据,不能为实型数据
  • 注意运算的优先级(~、>>,<<、&、^、|)

7.基本输入与输出

三、选择结构

四、循环结构

五、数组

六、字符数组与字符串

七、函数

八、指针

九、结构体与共用体

十、内存管理

十一、文件

十二、编译预处理