一、C语言概述
1.1 基本概念
1.1.1 编程语言
想要学习程序编写,就必须要搞清楚一个概念,什么是编程语言?
编程语言(programming language)可以简单的理解为一种计算机和人都能识别的语言。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。
一些常见的编程语言包括:
- C/C++:通用的编程语言,广泛用于系统开发和底层编程。
- Java:面向对象的编程语言,用于开发跨平台的应用程序。
- Python:通用的解释型脚本语言,易于学习和使用。
- JavaScript:用于前端和后端web开发的脚本语言。
- Ruby:简洁易读的脚本语言,适用于快速开发。
- Swift:用于iOS和macOS应用程序开发的编程语言。
- Go:由Google开发的高性能编程语言,用于并发和网络编程。
- Rust:注重内存安全和并发的系统编程语言。
- C#:微软开发的一种面向对象的编程语言,运行于.NET Framework之上,常用于Windows平台的桌面软件开发。
- PHP:通常用于Web开发,特别适合于管理大量中小型网站的架构。
1.1.2 源文件和头文件
在C语言中,通常将程序分为源文件和头文件。
- **源文件(source file)**包含了实际的可执行代码,它们是编译器直接编译和生成目标文件的文件。源文件的扩展名通常为.c。
- **头文件(header file)**包含了函数、变量和类型的声明,用于在源文件中引用这些声明的内容。头文件通常包含在源文件中,以便在编译过程中可以验证函数调用、变量声明等的正确性,并且在连接过程中可以正确地解析符号引用。头文件的扩展名通常为.h。
1.1.3 标准库
在编写程序时,每实现一个功能,就需要自己编写一个函数来实现这个功能,但有些功能不需要自己编写,C语言中已经自带了。程序猿只需要调用这个C语言中自带的功能即可,这样就可以省的自己编写了。例如,将程序结果输出到屏幕上,我们就可以调用自带的函数**“printf()”**
C 语言自带的所有这些功能,统称为**“标准库”(standard library),因为它们是写入标准的,到底包括哪些功能,应该怎么使用的,都是规定好的,这样才能保证代码的规范和可移植。不同的功能定义在不同的头文件中,我们在使用该功能时,只要包含该头文件,就可以使用该功能。例如,printf()的头文件就是系统自带的stdio.h**。头文件的后缀通常是.h。
前面提到,需要使用该功能就需要包含对应的头文件,加载头文件使用**“#include”命令。这就是为什么在使用printf()之前必须包含stdio.h**的原因
1.1.4 编译器
对于程序员来说,程序编写完毕之后,还需要通过编译器进行编译,这样才能得到我们需要的可执行程序。C语言有多个编译器可供选择,每个编译器有自己的特点和用途。以下是一些常用的C语言编译器:
1.GCC (GNU Compiler Collection):GCC是一个开源的编译器套件,支持多种编程语言,包括C语言。它是许多操作系统和开发环境的默认编译器,具有广泛的平台支持和强大的优化能力。
2.Visual C++:Visual C++是微软公司提供的一个C语言编译器,包括在Visual Studio集成开发环境中。它提供了丰富的调试工具和Windows平台的特定功能,并与其他Microsoft技术和工具紧密集成。
3.MinGW(Minimalist GNU for Windows):MinGW 是基于 GNU 的工具链,包括 GCC (GNU Compiler Collection)、GNU Binutils 和 GNU Debugger。它提供了一套用于在 Windows 上开发和编译 C 和 C++ 程序的工具集。
以上只是一些常见的C语言编译器,还有其他编译器可供选择。在选择编译器时,需考虑平台兼容性、性能优化、调试工具和开发人员的个人偏好等因素。
1.1.5集成开发环境
编写的C语言代码就是成员和计算机之间相互交流的暗号,其实就是一些有特殊含义的文字,我们可以把这些文件直接写到电脑的文件中,然后通过编译器进行编译就可以生成一个可执行程序,也就是我们平时在Windows中常见的 xxx.exe文件。
但是对于初学者来说根本就不知道编译器如何使用,所以我们可以使用一些没有门槛的编程工具,这类工具用一个统称叫做IDE。IDE是集成开发环境(Integrated Development Environment)的缩写。它是一种软件应用程序,旨在为开发者提供一个集成的工作环境,方便他们进行软件开发、编码和调试等任务。
C/C++ 程序猿常用的IDE有以下两种:
1.Visual Studio:由微软公司开发的集成开发环境(IDE),用于软件开发、应用程序的编码、调试和部署等任务。它支持多种编程语言,包括C/C++、C#、VB.NET、F#、Java、JavaScript、Python等。
2.Qt Creator:由Qt开发团队开发的集成开发环境(IDE),专门用于跨平台的应用程序开发。它是 Qt 框架的官方集成开发环境,为开发者提供了丰富的工具和功能,用于快速创建、调试和部署 Qt 应用程序。程序员也可以使用它用于 C/C++ 程序的开发。
二、第一个C程序 Hello World
#include <stdio.h>
int main(void) //主函数 main,没有参数,返回值为 int 类型
{
printf("Hello World\n"); //打印结果
return 0 ; //返回值
}
接下来让我们逐行剖析一下上面的这段代码。
2.1 注释
注释是程序中的非执行文本,编译器会忽略它们。
在 C 和 C++ 中的注释有两种类型类型:
- 单行注释:以双斜杠 // 开头的注释,从**//**开始一直到行尾都会被视为注释。例如:
//这是单行注释
2.多行注释: 以** /* 开始,以 */ **结束的注释块。可以跨越多行。例如:
/*
这是一个多行注释
我不是代码, 我的作用是对代码进行解释
*/
2.2 #include 头文件包含
#include 是 C/C++ 中的预处理指令,用于包含头文件(header file)到当前源代码文件中。头文件通常包含了函数、变量和类的声明,以便在当前文件中可以使用这些声明的内容。
示例程序第1 行,#include <stdio.h> 代表包含stdio.h这个头文件,这个头文件是 C标准库给我们提供的,可以直接使用。
关于头文件的包含有两种方式:
1.#include <>:< > 表示系统直接按系统指定的目录检索。如果包含的头文件是标准库头文件,在包含的时候就将其写入到 <> 中
2.#include “”:”” 表示系统先在 “” 指定的路径(没写路径代表当前路径)查找头文件,如果找不到,再按系统指定的目录检索。如果包含的头文件是自定义头文件,在包含的时候就将其写入到 ""中
2.3 main函数
main() 函数(又称主函数)是在 C 和 C++ 程序中的一个特殊函数,在一个完整的 C/C++ 程序中该函数有且只能有一个。它是程序的起点和入口,也就是说程序是从 main 函数开始执行的。
C语言中的函数分为四部分:
- 函数名:函数的名字,一般都是根据函数功能起名
- 参数列表:给函数传递的数据,参数全部被放到函数后边的()中
- 函数体:参数列表()后边的 { } 中的内容就是函数体
- 返回值:函数名前边的关键字对应的就是函数的返回值类型
三、C语言编译过程
C语言编译成可执行程序需经过4步:
1、**预处理:**宏定义展开、头文件展开、条件编译等,同时将代码中的注释删除。
2、**编译:**检查语法,将预处理后文件编译生成汇编文件
3、**汇编:**将汇编文件生成目标文件(二进制文件)
4、链接: C语言写的程序是需要依赖各种库的,所以编译之后还需要把库链接到最终的可执行程序中去