上一节课中我们介绍了进制,让我们了解了进制间的转换,这节我们就来运行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是不认识我们写的这些字符的,他只认识二进制指令。一般制作程序的流程是这样的。

  1. 编写好源代码
  2. 编译前,进行预处理
  3. 进行编译,生成obj文件
  4. 进行链接
  5. 生成目标程序,即可以运行。

其中,预处理,编译,链接可以使用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还有其他预处理命令,例如:#defineif#ifdef

库函数

有一些常用的代码,C语言以以将他们写好,直接俄提供给开发者使用,提供的代码就叫库函数。使用响应的库函数,必须要先包含响应的头文件。就像我们要告诉编译器,我们要使用哪个库函数,包含过后我们就可以使用其中的代码了。
printf()是将内容打印到命令提示符上,它包含在库函数stdio.h中。
system()是执行DOS命令,它包含在库函数stdlib.h中。

关键字

在C语言中,有一些代词被赋予了特殊的含义,我们在写代码的使用不能将这些关键字定义为变量或者其他操作。
C语言的关键字共32个,我们列出我们常用的部分。

变量定义类型定义分支选择循环控制持续控制修饰关键字
charenumifforcontinumunsigned
wchar_tunionelse ifwhilebreakconst
shortstructelsedo whilegotostatic
int switch case returnregister
long volatile
float
double

注释

注释不会参与程序的编译和执行,一般就起到说明代码逻辑的作用。按照现在的变成规范和大家的共识:我们写的代码是要给别人读懂的,顺带的还可以执行。
注释的书写方式

  • 单行注释 使用 //
  • 多行注释 使用 / /

注释的作用

  • 对代码进行解释说明
  • 便于我们以后阅读的时候快速理解代码含义
  • 在以后工作中,方便我们对代码修改和工作的交接
  • 我们可以使用注释来调试程序中的错误
最后修改:2020 年 08 月 26 日
如果觉得我的文章对你有用,请随意赞赏