C语言介绍
C语言是一门面向过程的计算机编程语言,既适合于系统程序设计,又适合于应用程序设计。它是一种抽象化的通用程序设计语言,广泛用于底层开发,尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性。
现在最新的C语言标准是 C18。
C语言发展历程
C语言诞生于美国的贝尔实验室,由D.M.Ritchie以B语言为基础发展而来,在它的主体设计完成后,Thompson和Ritchie用它完全重写了UNIX,且随着UNIX的发展,c语言也得到了不断的完善。
1972年C语言诞生,C语言之父是丹尼斯·里奇(Dennis Ritchie),同时也是UNIX之父。
C语言标准发布顺序:
- K&R C:1978年由布莱恩·柯林汉(Brian Kernighan)和丹尼斯·里奇(Dennis Ritchie)出版了《The C Programming Language》,这本书被C语言开发者们称为K&R,很多年来被当作C语言的非正式标准。人们称这个版本的C语言为K&R C。
- ANSI C:1989年ANSI发布了C语言标准,被称为C89、ANSI C.
- ISO/IEC 9899:1990:1990年ISO和IEC把C89标准定为C语言的国际标准,又称C90、ISO C,是C语言的第一个官方版本,因此C89、C90、ANSI C、ISO C、ANSI/ISO C实际上是一套东西。
- ISO/IEC 9899:1990/Cor 1:1994
- ISO/IEC 9899:1990/Amd 1:1995
- ISO/IEC 9899:1990/Cor 2:1996
- ISO/IEC 9899:1999:1999年ISO和IEC发布了C99,是C语言的第二个官方版本。
- ISO/IEC 9899:1999/Cor 1:2001
- ISO/IEC 9899:1999/Cor 2:2004
- ISO/IEC 9899:1999/Cor 3:2007
- ISO/IEC 9899:2011:2011年ISO和IEC发布了C11,是C语言的第三个官方版本。
- ISO/IEC 9899:2011/COR 1:2012
- ISO/IEC 9899:2017:C17只是解决了针对C11报告的许多缺陷。
- ISO/IEC 9899:2018:在 ISO/IEC 9899:2017(C17)的免费草案基础上做了部分修正。
C语言常用编译器
编译器
- GCC :GNU组织开发的开源免费的编译器。
- MinGW : Windows操作系统下的GCC。
- Clang : 开源的BSD协议的基于LLVM的编译器。
- Visual C++ : cl.exe,Microsoft VC++自带的编译器。
集成开发环境
- Code :Blocks,开源免费的C/C++ IDE。
- CodeLite :开源、跨平台的C/C++集成开发环境。
- Dev-C++ :可移植的C/C++IDE,Dev C++ 是一款免费开源的 C/C++ IDE,内嵌 GCC 编译器(Linux GCC 编译器的 Windows 移植版),是 NOI、NOIP 等比赛的指定工具。Dev C++ 的优点是体积小(只有几十兆)、安装卸载方便、学习成本低,缺点是调试功能弱。
- C-Free :C-Free 是一款国产的 Windows 下的C/C++ IDE,最新版本是 5.0,整个软件才 14M,非常轻巧,安装也简单,界面也比 Dev C++ 漂亮。C-Free 的缺点也是调试功能弱。可惜的是,C-Free 已经多年不更新了,组件都老了,只能在 XP、Win7 下运行,在 Win8、Win10 下可能会存在兼容性问题。
- Visual Studio系列 :Windows 下首先推荐大家使用微软开发的 Visual Studio(简称 VS)。
C语言的具体结构
我的第一个程序(Hello World)
1 | //先写头文件(就是一条预处理命令, 它的作用是通知C语言编译系统在对C程序进行正式编译之前需做一些预处理工作。) |
代码格式规范
- 一个说明或一个语句占一行,例如:包含头文件、一个可执行语句结束都需要换行。
- 函数体内的语句要有明显缩进,通常以按一下Tab为一个缩进。
- 括号要成对写,如果需要删除的话也要成对删除。
- 当一句可执行语句结束的时候末尾需要有分号。
- 代码中所有符号均为英文半角符号。
定义变量的标识符
- 标识符必须以字母a~z、 A~Z或下划线开头,后面可跟任意个(可为0)字符,这些字符可以是字母、下划线和数字,其他字符不允许出现在标识符中。
- 标识符区分大小写字母。
- 标识符的长度,c89规定31个字符以内,c99规定63个字符以内。
- C语言中的关键字,有特殊意义,不能作为标识符。
- 自定义标识符最好取具有一定意义的字符串,便于记忆和理解。
定义变量赋值
变量就是可以变化的量,而每个变量都会有一个名字(标识符)。变量占据内存中一定的存储单元。使用变量之前必须先定义变量,要区分变量名和变量值是两个不同的概念。
-
※ 注:
- 赋值语句:
int a=1;int b;b=1;
但是不能连等,int a=b=1
是 × 的 - 定义的所有变量要进行初始化,否则定义的数据可能是计算机储存的数据
C语言基本语句
scanf("");
——输入语句printf("");
——输出语句gets("");
——字符串输入语句put("");
——字符串输出语句//注释内容
——单行注释语句/*注释内容*/
——多行注释
1.在除第一个字符或字符串外前加上空格,来抵消之前输入的空格/回车
1 | #include<stdio.h> |
2.用fflush清空缓冲区。
1 | #include<stdio.h> |
3.用getchar吸收字符。
1 | #include<stdio.h> |
4.在第一个%c后面加上一个*c,忽略下一个读入的字符。
1 | #include<stdio.h> |
数据类型关键字
short
——声明短整型变量或函数int
——声明整型变量或函数long
——声明长整型变量或函数float
——声明浮点变量或函数double
——声明双精度变量或函数char
——声明字符型变量或函数void
——声明函数无返回值或无参数,声明无类型指针signed
——声明有符号类型变量或函数unsigned
——声明无符号类型变量或函数/li>struct
——声明结构体变量或函数enum
——声明枚举类型union
——声明共用体(联合)数据类型
控制语句
- 循环语句:
while
——循环语句do-while
——先执行循环体,然后判断循环条件是否成立. 之后继续循环for( ; ; )
——循环,可替代while语句; 只是用法不同break;
——跳出当前循环continue;
——结束这一轮循环,开始下一轮循环
- 条件语句:
if/else if
——条件语句else
——条件语句否定分支(与 if 连用)goto
——无条件跳转语句switch(){case 一个整型:语句;default:语句}
——用于多项条件选择,case为选择分支,default为其他分支
- 返回语句:
return
——返回语句
存储类型关键字
auto
——声明自动变量,一般不使用extern
——声明引用变量register
——声明积存器变量static
——声明静态变量
其他关键字
const
——声明只读变量sizeof
——计算数据类型长度typeof
——用于给数据类型取别名volatile
——说明变量在程序中可被隐含的改变
格式化输出语句