1. C语言概述
1.1 什么是C语言
本博客总结了上课的课件
但是博客排版不是很漂亮
如若需要word版本上课课件+源码+视频网盘版
可以扫一扫文末 在里面回复 IT资料
一提到语言这个词语,自然会想到的是像英语、汉语等这样的自然语言,因为它是人和人交换信息不可缺少的工具。
而今天计算机遍布了我们生活的每一个角落,除了人和人的相互交流之外,我们必须和计算机角落。
用什么的什么样的方式和计算机做最直接的交流呢?人们自然想到的是最古老也最方便的方式——语言,而C语言就是人和计算机交流的一种语言。
语言是用来交流沟通的。有一方说,有另一方听,必须有两方参与,这是语言最重要的功能:
l 说的一方传递信息,听的一方接收信息;
l 说的一方下达指令,听的一方遵循命令做事情。
语言是人和人交流,C语言是人和机器交流。只是,人可以不听另外一个人,但是,计算机是无条件服从。
语言有独特的语法规则和定义,双方必须遵循这些规则和定义才能实现真正的交流。
1.2 为什么要学习C语言
1.2.1 C语言特点
1) 优点
n 代码量小
n 执行速度快
n 功能强大
n 编程自由
2) 缺点
n 写代码实现周期长
n 可移植性较差
n 过于自由,经验不足易出错
n 对平台库依赖较多
1.2.2 学习C语言理由
1.2.3 C语言应用领域
C语言的应用极其广泛,从网站后台,到底层操作系统,从多媒体应用到大型网络游戏,均可使用C语言来开发:
l C语言可以写网站后台程序
l C语言可以专门针对某个主题写出功能强大的程序库
l C语言可以写出大型游戏的引擎
l C语言可以写出另一个语言来
l C语言可以写操作系统和驱动程序,并且只能用C语言编写
l 任何设备只要配置了微处理器,就都支持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.2 通过gcc编译C代码
1) gcc编译器介绍
编辑器(如vi、记事本)是指我用它来写程序的(编辑代码),而我们写的代码语句,电脑是不懂的,我们需要把它转成电脑能懂的语句,编译器就是这样的转化工具。就是说,我们用编辑器编写程序,由编译器编译后才可以运行!
编译器是将易于编写、阅读和维护的高级计算机语言翻译为计算机能解读、运行的低级机器语言的程序。
gcc(GNU Compiler Collection,GNU 编译器套件),是由 GNU 开发的编程语言编译器。gcc原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,gcc同样适用于微软的Windows。
gcc最初用于编译C语言,随着项目的发展gcc已经成为了能够编译C、C++、Java、Ada、fortran、Object C、Object C++、Go语言的编译器大家族。
编译命令格式:
gcc [-option1] ... <filename>
g++ [-option1] ... <filename>
l 命令、选项和源文件之间使用空格分隔
l 一行命令中可以有零个、一个或多个选项
l 文件名可以包含文件的绝对路径,也可以使用相对路径
l 如果命令中不包含输出可执行文件的文件名,可执行文件的文件名会自动生成一个默认名,Linux平台为a.out,Windows平台为a.exe
gcc、g++编译常用选项说明:
选项 |
含义 |
-o file |
指定生成的输出文件名为file |
-E |
只进行预处理 |
-S(大写) |
只进行预处理和编译 |
-c(小写) |
只进行预处理、编译和汇编 |
2) Windows平台下gcc环境配置
windows命令行界面下,默认是没有gcc编译器,我们需要配置一下环境。由于我们安装了Qt,Qt是一个集成开发环境,内部集成gcc编译器,配置一下环境变量即可使用gcc。
a)进入Qt安装目录:
b)拷贝gcc所在的路径(不同安装目录有所差异)
C:\Qt\Qt5.5.0\Tools\mingw492_32\bin
c) 设置windows环境变量
计算机(右击)-> 属性:
如果是win7,双击Path后,把拷贝的路径追加到后面,路径之间需要英文” ; ”分隔:
如果是win10,界面做得友好一下,新建添加路径即可:
d)测试gcc命令:
3) Windows平台下编译代码
1.3.3 代码分析
1) include头文件包含
l #include的意思是头文件包含,#include <stdio.h>代表包含stdio.h这个头文件
l 使用C语言库函数需要提前包含库函数对应的头文件,如这里使用了printf()函数,需要包含stdio.h头文件
l 可以通过man 3 printf查看printf所需的头文件
#include< > 与 #include ""的区别:
l < > 表示系统直接按系统指定的目录检索
l "" 表示系统先在 "" 指定的路径(没写路径代表当前路径)查找头文件,如果找不到,再按系统指定的目录检索
stdio.h是在操作系统的系统目录下:
2) main函数
l 一个完整的C语言程序,是由一个、且只能有一个main()函数(又称主函数,必须有)和若干个其他函数结合而成(可选)。
l main函数是C语言程序的入口,程序是从main函数开始执行。
3) {} 括号,程序体和代码块
l {}叫代码块,一个代码块内部可以有一条或者多条语句
l C语言每句可执行代码都是";"分号结尾
l 所有的#开头的行,都代表预编译指令,预编译指令行结尾是没有分号的
l 所有的可执行语句必须是在代码块里面
4) 注释
l //叫行注释,注释的内容编译器是忽略的,注释主要的作用是在代码中加一些说明和解释,这样有利于代码的阅读
l /**/叫块注释
l 块注释是C语言标准的注释方法
l 行注释是从C++语言借鉴过来的
5) printf函数
l printf是C语言库函数,功能是向标准输出设备输出一个字符串
l printf(“hello world\n”);//\n的意思是回车换行
6) return语句
l return代表函数执行完毕,返回return代表函数的终止
l 如果main定义的时候前面是int,那么return后面就需要写一个整数;如果main定义的时候前面是void,那么return后面什么也不需要写
l 在main函数中return 0代表程序执行成功,return -1代表程序执行失败
l int main()和void main()在C语言中是一样的,但C++只接受int main这种定义方式