C语言程序基础
1基础概念
1.1源文件
用来保存编写好代码的文件叫做源文件
每种编程语言的源文件都有特定的后缀,源文件后缀大都根据编程语言本身的名字来命名,例如:
- C语言源文件的后缀是.c;
- C++语言(C Plus Plus)源文件的后缀是.cpp;
- Java 源文件的后缀是.java;
- Python 源文件的后缀是.py;
- JavaScript 源文件后置是.js。
源文件为纯文本文件,其内部并没有特殊格式。
1.2目标文件与可执行文件
- 程序员编写的程序称为源代码
- CPU 可以直接识别,直接运行的程序称为可执行程序
CPU只可以识别并运行可执行程序,从而需要将源代码转换成可执行程序。
- 源代码经过编译生成目标文件
- 目标文件经过链接变成可执行文件
目标文件及可执行文件都为二进制形式,编译只将源代码变成二进制形式,但还需要与系统组件(比如标准库、动态链接库等)链接起来。
2基础工具
编译器即用来识别源代码中的词汇、句子以及各种特定的格式,并将其转换成计算机能够识别的二进制形式,这个过程称为编译。
链接实质上是一个“打包”的过程,它将所有二进制形式的目标文件和系统组件组合成一个可执行文件。完成链接的软件,叫做链接器。
- 编译器每次只能编译一个源文件,生成一个目标文件;
- 链接器需要将目标文件和系统组件组合起来,还需要将编译器生成的多个目标文件组合起来。
2.1 IDE(集成开发环境)
集成开发环境就是一系列开发工具的组合套装。实际开发中,除了编译器是必须的工具,还需要很多其他辅助软件,例如:
- 编辑器:用来编写代码,并且给代码着色,以方便阅读
- 代码提示器:输入部分代码,即可提示全部代码,加速代码的编写过程
- 调试器:观察程序的每一个运行步骤,发现程序的逻辑错误
- 项目管理工具:对程序涉及到的所有资源进行管理,包括源文件、图片、视频、第三方库等
- 漂亮的界面:各种按钮、面板、菜单、窗口等控件整齐排布,上手操作
这些工具通常被打包在一起,统一发布和安装形成软件,统称为集成开发环境(IDE,Integrated Development Environment),例如Visual Studio等。
2.2工程/项目
实际开发中,一个程序需要实现多种功能并且包含很多其他资源文件(视频,框架等),将这些文件放在同一个目录下,形成一个“Project”即“项目”/“工程”。(一个程序所有文件的集合)
工程类型/项目类型:
- 不带界面,完全是“黑屏”的,只能输入一些字符或者命令,称为控制台程序(Console Application)
- 带界面,能够使用鼠标操作,称为GUI程序(Graphical User Interface Program)
- 不单独出现,而是作为其它程序的一个组成部分,例如静态库、动态库等
不同的程序对应不同的工程类型(项目类型)。
3第一个C语言程序
#include <stdio.h>
int main()
{
printf("Hello World!\n");
return 0;
}
3.1函数
- 必须带括号的语句称为函数(能够独立完成某个功能,一次编写完成后可以重复使用的一段代码。)
printf("Hello World!\n");
是一段具有输出功能的代码,这段代码的名字是printf;
"Hello World!"
是要交给这段代码处理的数据。
使用函数在编程中叫做函数调用(Function Call)。
3.1.1自定义函数和main函数
-
C语言自带的函数称为库函数(Library Function);自己编写的函数称为自定义函数。
-
C语言规定,一个程序必须有且只有一个 main 函数。main 被称为主函数,是程序的入口函数。
程序运行时从 main 函数开始,直到 main 函数结束(遇到 return 或者执行到函数末尾时,函数才结束)。
int main()
{
printf("Hello World!\n");
return 0;
}
这段自定义函数:
1.main — 函数的名字/主函数,程序从这里开始执行;
2.( ) — 表明函数定义;
3.{ } — 函数要实现的功能的代码。
4.return 0:函数终止,接收待处理数据并将结果利用return告知,处理结果称为返回值。
3.2头文件
#include<stdio.h>
C语言开发者们将很多常用函数编写并分门别类的放在了不同的文件内,这些文件就称为头文件
- 引入头文件使用"#include"命令,并将文件名放在"< >“中(”#include"命令作用是将头文件中文本复制到当前文件,和当前文件一起编译)
- 头文件以".h"为后缀,不一定要引用。
3.3空白符
空格、制表符、换行符等统称为空白符(space character),它们只用来占位,并没有实际的内容,也显示不出具体的字符。
- “函数"和”()“之间、” “和”()"之间可以有任意的空白符,它们会被编译器忽略
- 由" "包围起来的字符串中空白符不会被忽略,会被原样输出在控制台上
- 字符串间不能换行,会发生编译错误。
3.4令牌(Token)
分号(;) | 结束符 |
注释 | //或/* */ |
标识符 | 识别变量、函数或其他 |
关键字 | c的保留字 |