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语言都能保证它绝对能存储对应的数据
- 比如说使用
- 这样要求就使得在不同平台下的数据类型的长度不会小于最小值