C语言基础知识
前言
本文内容基于 C-primer-plus (第六版), 所有代码基于C 99协议由GCC v10.2.0编译在Arch Linux 64位系统可以运行
主要介绍C语言的基础语法知识
- 概述
- 字符串格式化输入/输出
- 运算符,语句
- 循环
for,while,do while - 流程控制
if else, 三目运算符? : - 缓冲,重定向
- 递归和函数
- 指针和数组
- 字符串处理
- 存储类型
- 文件操作
- 结构体
一、C 语言基础知识
1.概述
根据 C 11 协议标准,C语言中有六种语句
1.标号语句
goto, case 和 default 是在 switch 中使用的标号语句.
goto 在结构化程序设计并不建议使用,容易造成程序的结构混乱,代码难以维护和调试,不易理解
2.复合语句
1 | {//一对花括号 |
3.表达式语句
表达式语句由 ; 分号结尾
一条语句可以只有一个 ;,表示什么都不做
;
4.选择语句
if && switch,可以根据某些条件改变程序原有的执行顺序和流程
5.迭代语句
for, while, do while,用于执行重复且相同的指令
6.跳转语句
- 无条件跳转到指定位置
将控制权限返还给上一级调用函数
用来从
switch或 循环中跳出一层
只能出现在循环体中,跳过本轮循环剩余代码,提前进入下一轮循环
用来在函数内跳转到指定标识符位置
2. main 的两种标准表示方法
1 | int main (void){ |
3. 两种注释方法
1 | //第一种 |
4. 关键字
有一些关键字是 c90和 c99新增
| auto | extern | short | whiel |
| break | float | signed(c90) | _Alignas(c99) |
| case | for | sizeof | _Alihnof(c99) |
| char | goto | static | _Atomic(c99) |
| const(c90) | if | struct | _Bool(c99) |
| continue | inline | switch | _Complex(c99) |
| default | int | typedef | _Generic(c99) |
| do | long | union | _Imaginary(c99) |
| double | register | unsingned | _Noreturn(c99) |
| else | rastrict | void | _Static_assert(c99) |
| enum(c90) | return | volatile(c90) | _Thread_local(c99) |
5. 函数
函数是C语言最基本的结构,在 c90 标准中新增了函数原型
函数原型
就是对函数的返回值和参数进行描述
1 | /* |
6. 参数
参数分为两种
7. 数据类型
C语言分为两大类型的数据
- 整数
int, short, long, long long
- 浮点数
float, double
_Bool 类型 (C99)
C99添加的新的类型,用于表示布尔值 true,false
占用 1位 存储空间
可移植类型
- 可移植是C语言的一个重要特点之一
C语言没有强制要求每种数据类型的具体长度而是 严格要求每种数据类型的最少长度- 这样要求就使得在不同平台下的数据类型的长度不会小于最小值
- 比如说使用
inttypers.h中的uint32_t(定义为无符号32位整型),也就是在不同的系统中可能是unsingned int也可能是unsingned long但是C语言都能保证它绝对能存储对应的数据
- 比如说使用
- 这样要求就使得在不同平台下的数据类型的长度不会小于最小值