1. C语言的test程序
在学习C语言语法之前,先来了解一下基本组成部分,C语言编写的源代码程序以.c结尾,只是一个普通的文本文件,也就是说用记事本都可以编写,下面是一个简单的C程序:test.c:
#include <stdio.h>
//第一个C程序
int main(void) {
printf("test\n");//输出test
return 0;
}
上面的test程序的作用是,在终端屏幕上显示一行信息“test”
2 .test.c编译运行
C语言编写的程序需要经过编译等一系列操作,才能真正被运行起来,并完成相应的输出,我们所编写的.c源文件现在没有任何的功能,要通过编译工具来赋予,下面是C程序编译的基本过程:
C源代码.c文件 —预处理—>扩展源代码.i文件—编译—>汇编代码.s文件—汇编—>目标代码.o文件—链接—>可执行程序.out/.exe文件
2.1 创建test.c程序
打开文本编辑器,推荐使用notepad++或者Vscode,把上面的代码输入进去,然后保存为test.c文件,扩展名一定要为.c,不然编译器不识别,如果Linux系统下,推荐Vim编辑器。
2.2 开发环境搭建
工欲善其事必先利其器,首先你要有一款优秀的代码编辑器或者IDE,推荐使用Vscode,就相当于java里的IDEA,写代码、调试代码都很好用。
其次要安装GCC编译器,GCC是目前最流行的C编译器之一,GCC最初是为C语言设计的,是GNU工具链的主要组成部分。在大多数Linux发行版中,GCC通常是默认安装的。如果是Windows系统,可以自行到GCC官网下载安装即可。
建议使用Linux操作系统作为开发环境,目前主流的发行版都做的挺棒的,比如:Ubuntu系统、Debian系统、CentOS等,不过要熟悉命令操作方式,习惯了都一样。如果资金充足的话,可以考虑再买一台计算机,如果不满足条件,可以使用虚拟机。
2.3 开始编译
这里以Linux系统环境为例(主要是为了方便),GCC环境准备好以后,打开Linux自带的命令行终端,输入下面的命令就开始编译:
$ gcc test.c
上面输入的命令就是gcc编译器将test.c源文件编译成二进制代码,默认会在当前目录下生成一个a.out文件,这是一个可执行文件,相当于Windows系统下的exe文件,注意:$符号不用写,它代表命令行提示符,只需要输入gcc test.c命令即可,这是最简单的一种编译形式,GCC还有很多编译参数。
执行a.out文件后,我们就可以在屏幕上看到输出的test了:
$ ./a.out
test
当然,也可以加上-o参数,指定生成的文件名:
$ gcc -o test test.c
$ ./test
test
上面的-o test指定了编译所生成的可执行文件名为test,取代了原来的a.out,执行./test命令,得到的结果和./a.out一样,都能输出test。
3. C语言基本语法
根据上面的test程序,再改造一个test2程序,进行简单的拆解,来看一下C语言的基础语法:
#include <stdio.h>
/*C程序Demo*/
int main(void){
int a;
a = 5;
int b = 7;
int sum = a + b;
printf("a的值为%d\n",a);
printf("b的值为%d\n",b);
printf("a加b的和为%d\n",sum);
return 0;
}
3.1 引入头文件
头文件通常在程序的开头使用#include
指令包含,一般以.h结尾,这里的stdio.h文件是标准库文件,后面要使用printf()函数就必须引入这个头文件,该库文件主要用于提供输入和输出的支持。
#include <stdio.h>
3.2 注释
注释不是要执行的代码,编译器遇到注释会自动跳过,不会进行编译,注释的主要作用就是为了帮助开发人员阅读和理解代码,C程序支持两种风格的注释方式://和/**/
//C程序Demo
/*C程序Demo*/
3.3 主函数main
C程序可以有一个或多个函数,但每个C程序都必须有一个main函数,C程序都从main函数开始执行,直到main函数结束而停止程序,main函数虽然区别于其他函数,但是展示一个函数的基本组成结构足够了:
- 函数名:返回值类型后面就是函数名,即main,如果没有返回值,那就写void
- 返回类型:函数名前面的int(整型)就是返回类型,它和后面的return语句是对应的
- 参数:函数名后面的小括号里(…)就是参数,支持一个或多个参数,这里的void代表不接受任何参数
- 函数体:参数列表后面大括号的内容{…}就是函数体,{ 表示函数的开始,} 表示函数的结束
- return语句:这里的返回值类型和开头的int是相对应的,所以返回的是一个整数
- 其他:在函数体内可以声明、定义变量,也可以调用其他函数等一系列操作,后面会讲到函数
int main(void){
...
...
...
return 0;
}
3.4 语句
C程序语句必须是以分号;结尾的,每一个分号都可看做是一条语句,语句就是一行行的执行指令。下面就是简单的变量声明、赋值语句、变量定义语句、以及表达式语句:
int a;//变量声明语句,声明一个类型为int、名为a的变量
a = 5;//变量赋值,将变量a赋值为5
int b = 7;//变量定义,定义一个类型为int、名为b、值为7的变量
int sum = a + b;//表达式语句,将变量a和变量b相加的值存放到变量sum里
3.5 printf()函数
这是一个函数调用语句,前面说了引入stdio.h头文件才可以使用printf()函数,这是由于大佬们都已经把函数的功能写在了标准库中,直接调用就可以使用了。
这里printf()函数的作用是在终端屏幕上输出不同格式的值,这里的%d就是表示十进制整数格式,也可以理解为占位符,它和逗号,后面要写入的变量个数是对应的,这样的格式还有很多,且允许自定义输出格式,后面都会讲到的。
这里三条printf()函数调用语句将以十进制整数的格式分别输出变量a、变量b、变量sum的值,\n是转义字符,代表换行:
printf("a的值为%d\n",a);//输出5
printf("b的值为%d\n",b);//输出7
printf("a加b的和为%d\n",sum);//输出12
4. 小结
- C语言源程序文件是一个普通的文本文件,使用任何文本编辑器都可以编写
- C语言编写的程序需要经过C编译器(GCC)编译成可执行文件才可以运行
- C语言源程序从main函数开始执行,每个C程序都必须有一个main函数
- 函数是组成C语言的基本模块,语句是组成C语言的基本单位
- C语言可以加入注释来辅助编写代码,增强代码可读性
- C语言通常引用标准库文件来提高开发效率,以减轻开发人员的工作量