1.C语言概述
1.1 什么是C语言
一提到语言这个词语,自然会想到的是像英语、汉语等这样的自然语言,因为它是人和人交换信息不可缺少的工具。
而今天计算机遍布了我们生活的每一个角落,除了人和人的相互交流之外,我们必须和计算机角落。
用什么的什么样的方式和计算机做最直接的交流呢?人们自然想到的是最古老也最方便的方式——语言,而C语言就是人和计算机交流的一种语言。
语言是用来交流沟通的。有一方说,有另一方听,必须有两方参与,这是语言最重要的功能:
- 说的一方传递信息,听的一方接收信息;
- 说的一方下达指令,听的一方遵循命令做事情。
语言是人和人交流,C语言是人和机器交流。只是,人可以不听另外一个人,但是,计算机是无条件服从。
语言有独特的语法规则和定义,双方必须遵循这些规则和定义才能实现真正的交流。
1.2 为什么要学习C语言
1.2.1 C语言特点
1) 优点
1.代码量小
2.执行速度快
3.功能强大
4.编程自由
2) 缺点
1.写代码实现周期长
2.可移植性较差
3.过于自由,经验不足易出错
4.对平台库依赖较多
1.2.2 学习C语言理由
1.2.3 C语言应用领域
C语言的应用极其广泛,从网站后台,到底层操作系统,从多媒体应用到大型网络游戏,均可使用C语言来开发:
1.C语言可以写网站后台程序
2.C语言可以专门针对某个主题写出功能强大的程序库
3.C语言可以写出大型游戏的引擎
4.C语言可以写出另一个语言来
5.C语言可以写操作系统和驱动程序,并且只能用C语言编写
6.任何设备只要配置了微处理器,就都支持C语言。从微波炉到手机,都是由C语言技术来推动的
1.2.4 C语言的简洁
C语言仅有32个关键字,9种控制语句,34种运算符,却能完成无数的功能:
1.2.5 学习C语言的常见困惑
1.3 第一个C语言程序:HelloWorld
1.3.1 编写C语言代码:hello.c
#include <stdio.h>
int main()
{
//这是第一个C语言代码
printf("hello world\n");
return 0;
}
C语言的源代码文件是一个普通的文本文件,但扩展名必须是.c。
1.3.3 代码分析
1) include头文件包含
1.#include的意思是头文件包含,#include <stdio.h>代表包含stdio.h这个头文件
2.使用C语言库函数需要提前包含库函数对应的头文件,如这里使用了printf()函数,需要包含stdio.h头文件
3.可以通过man 3 printf查看printf所需的头文件
#include< > 与 #include ““的区别:
1.< > 表示系统直接按系统指定的目录检索
2.”” 表示系统先在 “” 指定的路径(没写路径代表当前路径)查找头文件,如果找不到,再按系统指定的目录检索
2) main函数
一个完整的C语言程序,是由一个、且只能有一个main()函数(又称主函数,必须有)和若干个其他函数结合而成(可选)。
main函数是C语言程序的入口,程序是从main函数开始执行。
3) {} 括号,程序体和代码块
{}叫代码块,一个代码块内部可以有一条或者多条语句
C语言每句可执行代码都是";"分号结尾
所有的#开头的行,都代表预编译指令,预编译指令行结尾是没有分号的
所有的可执行语句必须是在代码块里面
4) 注释
//叫行注释,注释的内容编译器是忽略的,注释主要的作用是在代码中加一些说明和解释,这样有利于代码的阅读
/**/叫块注释
块注释是C语言标准的注释方法
行注释是从C++语言借鉴过来的
5) printf函数
printf是C语言库函数,功能是向标准输出设备输出一个字符串
printf(“hello world\n”);//\n的意思是回车换行
6) return语句
return代表函数执行完毕,返回return代表函数的终止
如果main定义的时候前面是int,那么return后面就需要写一个整数;如果main定义的时候前面是void,那么return后面什么也不需要写
在main函数中return 0代表程序执行成功,return -1代表程序执行失败
int main()和void main()在C语言中是一样的,但C++只接受int main这种定义方式
1.4 C语言编译过程
1.5.1 C程序编译步骤
C代码编译成可执行程序经过4步:
1)预处理:宏定义展开、头文件展开、条件编译等,同时将代码中的注释删除,这里并不会检查语法
2)编译:检查语法,将预处理后文件编译生成汇编文件
3)汇编:将汇编文件生成目标文件(二进制文件)
4)链接:C语言写的程序是需要依赖各种库的,所以编译之后还需要把库链接到最终的可执行程序中去