Hello, World!
前言
本文旨在记录我在学习c语言教程的过程,让自己更好的理解学习到的内容。如果有不对的地方,欢迎指证。
文中部分内容参考GPT,在此感谢ppword的支持,有了它就再也不用去找大神帮忙了。
介绍
C语言是一种通用的编程语言,与计算机的工作方式密切相关。了解计算机内存如何工作是C语言的一个重要方面。尽管C语言可能被认为是“难以学习”的,但事实上,C语言是一种非常简单的语言,具有非常强大的功能。
C语言是一种非常常见的语言,它是许多应用程序的语言,比如Windows、Python解释器、Git等等。
C语言是一种编译语言,这意味着为了运行它,编译器(例如GCC或Visual Studio)必须接受我们编写的代码,处理它,然后创建一个可执行文件。然后可以执行这个文件,它将按照我们打算的程序来执行。
我们的第一个程序
#include <stdio.h>
int main() {
printf("Hello, World!");
return 0;
}
程序第一部分
每个C程序都使用库,这些库提供了执行所需函数的能力。例如,最基本的函数printf,用于将内容打印到屏幕上,定义在stdio.h头文件中。
-
C程序库是一组预编译的函数、数据类型和宏的集合,这些函数和类型可以供C语言程序使用。它们是由编译器或操作系统提供的,以便开发人员能够更方便地编写程序。
-
标准C库是C语言的一部分,由C语言的标准规范所定义。它包含了C语言的基本功能,如输入输出、字符串处理、数学运算等。标准C库的头文件通常以<header.h>的形式包含在程序中,例如<stdio.h>、<stdlib.h>等。
为了为我们的程序添加运行printf命令的能力,我们必须将以下包含指令添加到代码的第一行:
#include <stdio.h>
在C语言中,#include <stdio.h>是一个预处理指令,用于包含名为stdio.h的标准库头文件。
我们怎么理解这句代码?
头文件
-
头文件(Header file)是一种包含在C或C++程序中的文本文件,用于声明函数、变量、宏、结构体和其他类型的定义。头文件通常包含了各种预定义的函数原型、常量、类型定义和宏定义,以便在程序中进行引用和使用。
-
头文件的主要作用是提供程序的接口和声明。通过包含头文件,程序可以访问和使用其中定义的函数、变量和宏。头文件的内容可以被多个源文件共享,从而避免了重复编写相同的声明和定义的问题。
-
在编写程序时,可以使用系统提供的标准头文件,如<stdio.h>、<stdlib.h>等,也可以自定义头文件来组织和分离程序的不同部分。
什么是#include
-
在C语言中,#include是一个预处理指令,用于包含其他代码文件(通常是头文件)的内容到当前的源代码文件中。
-
#include指令告诉编译器在编译过程中将被包含的文件的内容插入到当前文件的位置。这样,被包含的文件中的函数、变量和宏等定义就可以在当前文件中使用。
预处理指令
-
预处理指令是一种在编译过程之前由预处理器处理的特殊指令,它们并不是真正的代码。
-
预处理器是编译器的一部分,它负责在实际的编译过程之前对源代码进行文本处理。预处理器会根据预处理指令执行相应的操作,例如替换文本、包含其他代码文件的内容、定义宏等等。
-
预处理指令以
#
符号开头,并且不需要以分号结尾。它们在源代码中的位置没有严格的限制,通常放在代码的开头或函数的内部。常见的预处理指令包括#include
、#define
、#ifdef
、#ifndef
、#endif
等,后面几个以后用到再说。 -
预处理指令的作用是在编译之前对源代码进行一些预处理操作,以便影响实际的编译结果。它们可以用来包含其他代码文件、定义常量和宏、条件编译等。
完整理解 #include<stdio.h>
在预处理阶段,#include<stdio.h>指令会被预处理器处理。预处理器会查找名为stdio.h的头文件,并将其内容插入到包含该指令的位置。
因此,在预处理之后,#include<stdio.h>指令会被替换为stdio.h头文件的实际内容。例如,stdio.h头文件中的内容可能包含像printf()、scanf()等函数的声明,以及其他与标准输入输出相关的声明。
需要注意的是,在预处理之后,代码还需要经过编译、汇编和链接等步骤,才能生成可执行程序。
总结来说,在预处理之后,#include<stdio.h>指令会被替换为stdio.h头文件的实际内容,而代码中就可以使用该头文件中定义的函数和声明。
程序第二部分
代码的第二部分是我们要编写的实际代码。第一个运行的代码总是位于main函数中。
int main() {
...我们的代码写在这里
}
什么是main
函数
-
main函数是C程序的入口点(entry point)。当程序被执行时,操作系统将首先调用main函数。
-
在函数的最后,我们通常使用return语句来表示程序的结束,并返回一个整数值。在C中,约定使用返回值0来表示程序正常终止,非0的返回值通常表示程序异常终止或错误码。
int
关键字表示main
函数将返回一个整数。
对于本教程,我们将返回0以表示我们的程序成功运行:
return 0;
注意,C中的每个语句都必须以分号结尾,以便编译器知道新的语句已经开始。
最后但同样重要的是,我们需要调用printf
函数来打印我们的句子。
总结
当程序运行时,操作系统将调用main
函数作为程序的入口点。在main
函数的函数体内,程序执行以下操作:
-
包含
<stdio.h>
头文件:这个头文件包含了C语言标准库中的输入输出函数的声明。通过包含这个头文件,我们可以使用printf
函数。 -
调用
printf
函数:printf
函数是C语言标准库中的函数,用于将格式化的数据写入标准输出流(通常是控制台)。在这个例子中,我们使用printf
函数输出了文本字符串Hello, World!
。该字符串被包含在双引号""
中,表示它是一个字符串常量。 -
return 0;
语句:这个语句用于表示程序的正常终止,并返回一个整数值0
。在C语言中,约定使用返回值0
表示程序成功执行完成,非0
的返回值通常用于表示错误码或异常终止。
综上所述,这个程序的具体操作是包含头文件、调用printf
函数输出Hello, World!
这个文本字符串,然后使用return 0;
语句表示程序正常结束并返回值0
。它是一个简单的示例程序,用于展示基本的输出功能和程序结构。