1、C 实例 -- Hello World
#include <stdio.h> //头文件
//空白行
/* 我们的第一个 C 程序 */ //注释
int main() //函数
{ //函数体开始
printf("Hello, World! \n"); //输出语句
return 0; //结束并返回语句
} //函数体结束
2、C 实例 -- Hello World 第一行
#include <stdio.h> //头文件
2.1、什么是源文件?
源文件
是用于存储计算机程序代码的文本文件。
- C 语言的源文件一般以 .c 为扩展名(如:上一个笔记里面的
hello.c
就是源文件)。 源文件(.c)
需要经过编译器编译,生成可执行文件(.exe)
(如:上一个笔记里面的hello.exe
就是生成的可执行文件)。这一步会将源代码
转换为计算机可以理解的机器语言
。
2.2、什么是头文件?
头文件
包含 C 函数函数声明、宏定义和类型定义的文件,这些头文件提供了源文件
中需要使用的接口,被多个源文件中引用共享。
- 头文件是扩展名为 .h 的文件,h 就是 head (头)的简称。
- 有两种类型的头文件:程序员编写的头文件和编译器自带的头文件。
2.3、引用头文件的格式 和 原理深入
使用 C 预处理指令
#include
来引用头文件
。
2.3.1、格式
- \#include 是 C 语言预处理器指示符。
- \#和 include 之间可以有多个空格。
- \#也不一定要顶格,但是一定是第一个非空白字符,否则编译器会提示错误。
2.3.2、原理深入
2.3.2.1、#include 的作用
告诉编译器在编译前,要做些预先处理
。将后面 <> 中的文件内容包含到当前文件内。所谓包含,是指将 <> 中列出的文件的内容复制到当前文件里
。
引用头文件相当于复制头文件的内容到源文件中。
2.3.2.2、同理可以理解
(1)printf 函数的声明位于 stdio.h 文件中;
(2)用 #include 把 stdio.h 头文件
包含进来,自然就把 printf 函数的声明包含进来了。
2.3.2.3、引用头文件的原理演示
(1) 例如,如果您有一个头文件 header.h,如下:
- header.h
char *test (void);
(2) 和一个使用了头文件的主程序 program.c,如下:
- program.c
int x;
#include "header.h"
void main (void)
{
printf("Hello, World! \n");
}
(3) 编译器会看到如下的代码信息,引用头文件相当于复制头文件的内容到源文件中
:
int x;
char *test (void);
void main (void)
{
printf("Hello, World! \n");
}
2.4、引用头文件的两种形式
系统头文件
和用户头文件
。
2.4.1、系统库头文件
#include <file>
查找策略:
直接去标准路径
下去查找头⽂件,如果找不到就提⽰编译错误。
标准路径:
如我本地的路径: C:\Users\hwc\AppData\Local\Programs\mingw64\x86_64-w64-mingw32\include
查看方式:
2.4.2、用户头文件
#include "file"
查找策略:
先在源⽂件所在⽬录
下查找,如果该头⽂件未找到,编译器就像查找库函数头⽂件⼀样在标准路径
查找头⽂件。如果找不到再提⽰编译错误。
对于库头⽂件也可以使⽤ “” 的形式?
可以的,但是这样做查找的效率就低些,而且这样也不容易区分是库⽂件还是本地⽂件了。
2.5、做一个试验
将中的第一行代码删除掉。就是去掉了“#include <stdio.h>”,再编译看出现什么现象?
编译器提示缺少 printf 的函数原型,说明 printf 没有被声明,程序找不到这个函数,报错!
注意: printf 函数的定义在头文件 stdio.h,所以想使用 printf 函数需要包含头文件 stdio.h!
2.6、标准库头文件
C 语言自带的函数称为库函数(Library Function)。库(Library)是编程中的一个基本概念,可以简单地认为它是一些列函数的集合,在磁盘上往往是一个文件夹。C 语言自带的库称为标准库(Standard Library),其他公司或个人开发的库称为第三方库(Third-Party Library)。
C 标准库头文件(Standard Library Header Files)提供了大量的函数、宏和类型定义,用于处理输入输出、字符串操作、数学计算、内存管理等常见的编程任务。
以下是一些常见的 C 标准库头文件及其功能简介:
头文件 | 功能简介 |
---|---|
<stdio.h> | 标准输入输出库,包含 printf、scanf 等函数 |
<stdlib.h> | 标准库函数,包含内存分配、程序控制等函数 |
<string.h> | 字符串操作函数,如 strlen、strcpy 等 |
<math.h> | 数学函数库,如 sin、cos、sqrt 等 |
<time.h> | 时间和日期函数,如 time、strftime 等 |
<ctype.h> | 字符处理函数,如 isalpha、isdigit 等 |
<limits.h> | 定义各种类型的限制值,如 INT_MAX 等 |
<float.h> | 定义浮点类型的限制值,如 FLT_MAX 等 |
<assert.h> | 断言宏 assert,用于调试检查 |
<errno.h> | 定义错误码变量 errno 及相关宏 |
<stddef.h> | 定义通用类型和宏,如 size_t、NULL 等 |
<signal.h> | 处理信号的函数和宏,如 signal 等 |
<setjmp.h> | 提供非本地跳转功能的宏和函数 |
<locale.h> | 地域化相关的函数和宏,如 setlocale 等 |
每日一更!
公众号:小菜狗编程笔记
飞书:小菜狗编程笔记
谢谢点赞关注哈!
本文由mdnice多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。