上一节课中我们介绍了进制,让我们了解了进制间的转换,这节我们就来运行C语言的第一个程序。
这里我们需要一个vs环境,这里就不再介绍vs的安装步骤了直开始第一个运行程序。
一个可运行的程序
依照国际惯例,我们以及我们程序员的精神,我们当然要输出一个Hello World
#include <stdio.h> //编译出处理命令
#include <stdlib.h> //编译预处理命令
int main(void) //程序启动函数
{ //函数开始的标志
printf("Hello world"); //函数输出信息
system("pause"); //让程序暂停一下,system这函数所需的头文件是#include <stdlib.h>
return 0; //函数退出,返回0
} //程序结束标志
程序的编译
一个C语言编译好之后,要想运行,必须要编译,因为CPU是不认识我们写的这些字符的,他只认识二进制指令。一般制作程序的流程是这样的。
- 编写好源代码
- 编译前,进行预处理
- 进行编译,生成obj文件
- 进行链接
- 生成目标程序,即可以运行。
其中,预处理,编译,链接可以使用Visual Studio
一键完成。也就是只要写好了源代码,直接就可以生成能够执行的程序了。
继续我们之前的Hello World
代码,这段代码中实际上包含了很多C语言的基本知识:
- main函数
- 预处理
- 库函数
- 关键字
- 注释
我们对以上知识点进行依次介绍
main函数
每一个C程序都必须有一个main函数,这个东西是整个程序的入口点,程序执行的第一行代码所在地。
通常的main函数的写法
int main(void)
{
return 0;
}
VS中默认main函数
int _tmain(int argc,_TCHAR* argv[])
{
return 0;
}
我们VS中的多余的参数,我们暂时用不到,只知道他是接受参数用的即可。
在一个项目中只能有一个main函数,如果定义多个main函数就会报错。
预处理
什么是预处理
以#开头的命令(通常称为指令),他是再程序编译之前进行的处理,通常会对文件做一些赋值粘贴,替换等操作。
为什么要使用#include
就针对我们刚才的Hello World
来说,我们使用的printf函数(再命令行中打印),他是包含在其他文件中(stdio.h)的函数,我们使用预处理命令将函数库包含进来,包含进来之后,我们就可以使用其中的函数。
#include其实就是将我们包含的文件中的代码赋值粘贴到我们使用#include的地方。
#include的两种形式
1.#include <文件名> 在VS自带的头文件中取找该头文件
2.#include "文件名" 先在当前工程项目中去找该头文件,然后再去vs自带的头文件中去找这个文件
//例如:
#include <stdio.h>
#include "Myfile.h"
我们需要注意一个常见的错误:
//#include "stdafx.h" //如果我么建立了一个默认的工程,会需要包含这个头文件,如果不包这个头文件就会报错
//在查找预编译头的时候遇到意外的文件结尾。我们就可以看一下是不是自己忘记包含头文件"stdafx.h"
#include <stdio.h>
#include <stdlib.h>
int main()
{
return 0;
}
当然处了#include
还有其他预处理命令,例如:#define
、if
、#ifdef
等
库函数
有一些常用的代码,C语言以以将他们写好,直接俄提供给开发者使用,提供的代码就叫库函数。使用响应的库函数,必须要先包含响应的头文件。就像我们要告诉编译器,我们要使用哪个库函数,包含过后我们就可以使用其中的代码了。
printf()是将内容打印到命令提示符上,它包含在库函数stdio.h
中。
system()是执行DOS命令,它包含在库函数stdlib.h
中。
关键字
在C语言中,有一些代词被赋予了特殊的含义,我们在写代码的使用不能将这些关键字定义为变量或者其他操作。
C语言的关键字共32个,我们列出我们常用的部分。
变量定义 | 类型定义 | 分支选择 | 循环控制 | 持续控制 | 修饰关键字 |
---|---|---|---|---|---|
char | enum | if | for | continum | unsigned |
wchar_t | union | else if | while | break | const |
short | struct | else | do while | goto | static |
int | switch case | return | register | ||
long | volatile | ||||
float | |||||
double |
注释
注释不会参与程序的编译和执行,一般就起到说明代码逻辑的作用。按照现在的变成规范和大家的共识:我们写的代码是要给别人读懂的,顺带的还可以执行。
注释的书写方式
- 单行注释 使用 //
- 多行注释 使用 / /
注释的作用
- 对代码进行解释说明
- 便于我们以后阅读的时候快速理解代码含义
- 在以后工作中,方便我们对代码修改和工作的交接
- 我们可以使用注释来调试程序中的错误