C语言介绍
什么是C语言?
1.C语言是由AT&贝尔实验室的丹尼斯·里奇于1972年发明的,那个时候所实验的电脑主要是PDP-11。
2.C语言在今天还仍然得到广泛使用的原因在于,其易于拓展到新的系统架构、高效性以及更面向于计算机底层。
C语言特性
- 较少的关键字
- 结构体、联合体等紧凑数据类型
- 支持指针或指针操作
- 外部标准库
- 最终是编译到机器码执行
- 支持宏预处理器
C语言版本
- 1972年——C语言的发明
- 1978年——C语言的第一个规范版
- 1989年——C89版(也常称为ANSI C或者标准C)
- 1990年——C90版(被ISO采纳)
- 1999年——C99标准版(有非常高的反向兼容性,但是还不被很多编译器所支持)
- 2007年——C1X新标准版
C语言用途
- 系统编程——如Linux操作系统
- 微控制器编程——汽车、飞机电子设备
- 嵌入式处理器编程——手机等移动设备
- DSP编程——数字信号处理、电视系统
C语言警告——固有的不安全性
- 无范围检查
- 编译时有限的类型安全性
- 运行时无类型检查
- 最好在调试器里运行,如gdb
- 从不要用root模式运行
编译与调试
gcc编译
# gcc -Wall infilename.c -o outfilename.o
# gcc -g -O0 -Wall infilename.c -o outfilename.o
- -Wall,使能编译器警告
- -g,使能调试信息
- -O0,让编译器进行编译时代码优化(gcc的默认优化)
- -O1,代码大小与执行时间优化
- -O2,进一步的代码大小与执行时间优化
- -O3,更进一步的代码大小与执行时间优化
gdb调试——常用命令
# gdb hello.o
- break 行号,设置断点
- break 文件:行号,在指定文件中设置断点
- run,运行程序
- c,继续执行
- next,执行下一行
- step,执行下一行或进入函数
- quit,退出gdb
- print 表达式,打印表达式的值
内存调试
valgrind ./hello.o