![2af522067aa0a1b537e8e6625d5dd818.png](https://i-blog.csdnimg.cn/blog_migrate/70933de9ab5fd5799be2f720e9ab9c01.jpeg)
1.1 C语言概览
C语言凭借其高效率、良好的移植性、功能强大的特性在操作系统、硬件驱动以及系统应用开发占据广阔的市场。
1.1.1 C语言发展简史
![488a5468b51e9f2211eacab8b64a724b.png](https://i-blog.csdnimg.cn/blog_migrate/71b192ebe215f3c9536e0d7dbe534743.jpeg)
Dennis Ritchie
- 起源
- 1972年,贝尔实验室的Dennis Ritchie和Ken Thompson在开发Unix操作系统时设计了C语言,该操作系统的90%以上的代码都是由C语言实现,后期的Linux,MacOS,Android,IOS都是基于Unix发展而来的。
- 标准
- 1987年Dennis Ritchie和Brian Kernighan编写了The C Programming Language第一版是公认的C标准实现,而没有定义C库。
- 而后期ANSI/ISO先后于1990年、1999年和2011年发布了C90标准、C99标准和C11标准,该标准定义了C语言和C标准库。
1.1.2 C语言特性
C语言作为面向过程的高级程序设计语言,能够轻松的实现自顶向下的规划、结构化编程和模块化设计,这样使得程序结构更加简洁,可扩展性强以及更加容易维护。
而且C语言有着高效(执行速度快)、功能强大(嵌套汇编)以及可移植性(标准库可移植)、功能强大等优点,而且也存在着对系统平台库依赖严重,由于编程风格自由,经验不足也会容易导致出错,编写代码实现周期长,同样的代码在不同的操作系统(或者编译器)下可能会有不同的表现等缺点。
1.1.3 C语言应用场景
C语言偏向操作系统、硬件驱动、底层应用(数据库、编译器)、嵌入式应用开发、游戏引擎等应用场景。
- 硬件驱动的绝大部分实现是由C语言和汇编语言实现的。
- 主流操作系统(Unix,Linxu,MacOS,Windows,Android,iOS)的底层实现都是由C语言和部分汇编实现的。
- C++,Java,Python,Swift的编译器或者解释器都是由C语言实现的。
- Git,Nginx,Redis,MySQL都是使用C语言实现的,而且都是开放源代码的,可以在GitHub中获取到,可以通过阅读源码提升自己的设计和编码能力。
1.2C语言集成开发环境搭建
目前主流操作系统(Windows,Linux,MacOS)都有完善的C语言集成开发环境,用于编辑、编译、调试、打包部署C程序。
![3bfe096bda2e1ec96c10ede42bc3b0cb.png](https://i-blog.csdnimg.cn/blog_migrate/456cfe4c209eaaede6cfaadc6ce0cf3a.jpeg)
C语言集成开发环境搭建
Windows作为世界上最流行的桌面操作系统,最新版本为Windows10 1903,VisualStudio作为Windows上最强大的集成开发环境,可以开发Windows软件,游戏,Web应用等等,最新版本为VisualStudio2019 16.2.2。
![491e9ed58a2e956a08504983bd637eb1.png](https://i-blog.csdnimg.cn/blog_migrate/59b6aa70a1833771559d18d868df5e69.jpeg)
Ubuntu作为最受欢迎的桌面版Linux系统之一,推荐采用跨平台的集成开发环境QT来编写C/C++程序。
![40613929707544cc58c03d80ece7a742.png](https://i-blog.csdnimg.cn/blog_migrate/1b78f67ac4bbdd115d7f1fb9750e5eea.jpeg)
MacOS平台推荐使用XCode来编写C/C++程序,而且XCode在macOS系统上是自带的,无需额外安装。
![e8a22614520310617f1a67503261edb5.png](https://i-blog.csdnimg.cn/blog_migrate/27cb8e8408a2adea71a43e00669d0db9.jpeg)
除此以外还有些跨平台的C/C++ 开发工具,例如来自Jetbrains公司的CLion也可以用来编写C/C++程序。
![b05eb7e0471e5be10217e9807ce4f50a.png](https://i-blog.csdnimg.cn/blog_migrate/3011b29f4814d60f6dc9d15323f83675.jpeg)
关于IDE的安装以及使用,它们的官网都提供了详细的教程,同学们可以自行去查阅。
![398dc05c6ebdc7e659d5be13d8454984.png](https://i-blog.csdnimg.cn/blog_migrate/3b9da4766574bbf7e1de86aee652a01f.jpeg)
IDE下载和帮助文档
C语言学习过程中会使用Windows10 1903+Visual Studio 2019作为主力开发工具,如果没有特别的说明,默认的环境就是Windows10 1903和Visual Studio 2019。
![5c60414019ac396720ec4c8ae444f664.png](https://i-blog.csdnimg.cn/blog_migrate/11eec88c9439030f7002e3daa4a0710f.jpeg)
C语言程序的结构认识
我们用一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,加深小伙伴们对C语言的认识。
例1:计算两个整数之和的c程序:
#include
main()
{
int a,b,sum; /*定义变量a,b,sum为整型变量*/
a=20; /*把整数20赋值给整型变量a*/
b=15; /*把整数15赋值给整型变量b*/
sum=a+b; /*把两个数之和赋值给整型变量sum*/
printf(“a=%d,b=%d,sum=%dn”,a,b,sum);
/*把计算结果输出到显示屏上*/
}
重点说明:
1、任何一个c语言程序都必须包括以下格式:
main()
{ }
这是c语言的基本结构,任何一个程序都必须包含这个结构。括号内可以不写任何内容,那么该程序将不执行任何结果。
2、main()----在c语言中称之为“主函数”,一个c程序有且仅有一个main函数,任何一个c程序总是从main函数开始执行,main函数后面的一对圆括号不能省略。
3、被大括号{ }括起来的内容称为main函数的函数体,这部分内容就是计算机要执行的内容。
4、在{ }里面每一句话后面都有一个分号(;),在c语言中,我们把以一个分号结尾的一句话叫做一个c语言的语句,分号是语句结束的标志。
5、printf(“a=%d,b=%d,sum=%dn”,a,b,sum);----通过执行这条c语言系统提供给我们直接使用的屏幕输出函数,用户即可看到运行结果,本程序运行后,将在显示器上显示如下结果:
a=20,b=15,sum=35
6、#include
注意:(1)以#号开头(2)不以分号结尾
这一行没有分号,所以不是语句,在c语言中称之为命令行,或者叫做“预编译处理命令”。
7、程序中以 /*开头并且以*/结尾的部分表示程序的注释部分,注释可以添加在程序的任何位置,为了提高程序的可读性而添加,但计算机在执行主函数内容时完全忽略注释部分,换而言之就是计算机当做注释部分不存在于主函数中。
C程序的生成过程
C程序是先由源文件经编译生成目标文件,然后经过连接生成可执行文件。
源程序的扩展名为 .c ,目标程序的扩展名为 .obj , 可执行程序的扩展名为.exe 。
标识符
在编写程序时,必须为函数、变量等命名,这个名字称为标识符。C语言中标识符的命名规则如下:
标识符只能由字母、数字、下划线组成;
标识符的第一个字母必须是字母和下划线;
标识符区分大小写字母,如If和if是两个完全不同的标识符。
合法标识符如下:
A6, b_3 , _mn
非法的标识符如下:
ab#12 , 8m , tr3:4 , yes no
标识符不能与程序中具有特殊意义的关键字相同,不能与用户编制的函数名、C语言库函数相同,在程序中各种标识符尽量不要重复,以便区分。选择变量名和其他标识符时,应注意做到 “见名知义”。
标识符分为如下三类:
1、关键字
关键字是具有特定含义的,专门用来说明c语言特定成分的一类标识符,不能用作用户的标识符。
auto
break
case
char
union
do
double
else
enum
extern
goto
if
int
long
short
signed
static
sizof
struct
switch
unsigned
void
for
while
typedef
continue
float
return
typedef
default
2、预定义标识符
预定义标识符在c语言中也有特定的含义,但可以用作用户标识符,预定义标识符分为两类:
(1)、库函数名字,比如(printf,scanf,sin,isdigit等)
(2)、编译处理命令名,比如(define,include)
3、用户标识符
用户根据需要自己定义的标识符称为用户标识符。无论如何自定义标识符,都必须符合标识符的三条命名规则。
常量
在程序运行中,其值不能被改变的量称为常量。常量有5种类型:整型常量、实型常量、字符常量、字符串常量和符号常量。