
C语言 - 第二章第一节 - C程序设计的初步知识

一、第一个程序 Hello, World!
“Hello, World!”不仅是编程教学的起点,更是连接技术、文化与历史的纽带。它见证了编程语言的演变、开发工具的进步,以及程序员社区的集体智慧。正如前人所述:“所有编程者学习编程的第一步就在于此”,它的地位无可替代,是每位开发者共同的“编程成人礼”。既如此,让我们来看看 C 语言中的第一步要如何编写。
1 |
|
此时控制台中会输出如下内容
二、参数解释
我们来逐行解释一下这个基本的程序:
1. #include<stdio.h>
- 作用:像“借工具”一样,引入一个叫
stdio.h
的工具包。其中#include< >
这种系列叫做预处理命令 - 比喻:
假设你要做一道菜,但厨房里没有锅,这时候你必须先去工具间拿锅。#include<stdio.h>
就像“去工具间拿锅”,其中#include< >
表示你需要去拿一个锅,stdio.h
是用来干什么的锅,它告诉你程序需要一些基本的工具(比如输出文字到屏幕的功能)。 - 为什么需要它?
因为printf
(后面会讲)是这个工具包里的一个工具,没有它,计算机就不知道printf
是什么。
2. int main()
- 作用:告诉计算机“我的程序从这里开始执行”。
- 比喻:
这是你写的故事的第一章,也是唯一一章。计算机总是从这里开始读你的程序。 - 分解解释:
int
:表示这个“章节”最终会告诉计算机一个整数(比如0
表示成功,1
表示失败)。main
:这是章节的名字,所有 C 程序都必须有一个叫main
的章节,否则计算机不知道从哪里开始。()
:暂时不用管,可以理解为“章节的开关”。
3. {
和 }
- 作用:包裹代码块,告诉计算机“这部分代码属于
main
章节”。 - 比喻:
{
是“打开章节的开关”,}
是“关上开关”。所有写在中间的代码都会在程序运行时执行。 - 例子:
1
2
3int main() { // 开关打开
// 这里的代码会被执行
} // 开关关闭
4. printf("Hello,World!");
- 作用:让计算机在屏幕上显示文字。
- 比喻:
这是你在屏幕上“写一句话”的命令。printf
是一个预定义的“写字工具”,就像打印机一样。 - 分解解释:
printf
:工具的名字,来自刚才的stdio.h
工具包。("Hello,World!")
:告诉printf
要写的内容是什么,用双引号括起来。;
:表示这条命令结束,就像句号一样。没有它,计算机就会迷糊!
5. /*This is your first C Program*/
- 作用:写注释(不会影响程序运行)。
- 比喻:
这是给程序员自己或别人看的“便签纸”,计算机完全忽略它。 - 为什么需要注释?
比如你写了一段复杂的代码,过几天忘了自己写的是什么,注释就是提醒自己或别人:“这里我做了什么”。
6. return 0;
- 作用:告诉计算机“程序执行完毕,结果是成功”。
- 比喻:
这是你在故事的最后一页写“故事结束”,并告诉读者“结局是好的”。 - 为什么是
0
?- 在 C 语言中,
return 0;
表示程序成功结束。 - 如果程序出错了,可以返回其他数字(比如
return 1;
表示出错)。
- 在 C 语言中,
整个程序的执行流程
- 计算机打开你的程序,先读
#include<stdio.h>
,准备好工具包里的工具。 - 进入
main()
章节,开始执行里面的代码。 - 执行
printf("Hello,World!");
,在屏幕上显示Hello,World!
。 - 执行
return 0;
,告诉计算机“任务完成,结果是成功”。 - 程序结束。
常见问题解答
为什么要有
#include<stdio.h>
?
因为printf
不是 C 语言的“内置功能”,必须通过#include
借用工具包里的工具才能使用。为什么
main
必须写成int main()
?int
表示这个函数最终会返回一个整数(比如0
)。main
是程序的入口点,必须这样写,否则计算机不知道从哪里开始。
注释可以写在哪里?
可以写在代码的任何地方,但必须用/*
和*/
包裹,或者用//
写单行注释(比如// 这是我的注释
)。为什么要有分号
;
?
分号是 C 语言的“句号”,告诉计算机“这条命令结束了”。没有它,计算机就会迷糊,报错。
三、格式特点
1. 习惯上用小写字母,对大小写敏感
即在 C 语言程序中,大写的 ADD 和小写的 add 和混合写的 Add是不同的东西
2. 不使用行号,无程序行概念
在 VSC 中,我们可以看到,在我们编辑的代码的左侧,有这样一些数字
这些数字表示 行号
,行号主要用于定位代码位置(比如调试时报错会提示错误行号),但它本身不影响程序的执行逻辑。比如,我们可以把程序全部写在一行里面,如下:
1 | #include<stdio.h>int main(){printf("test");return 0;} |
写出超级长的一行,C 语言也可以执行。因为,C语言的执行顺序完全由代码的语法结构(如函数、语句、控制结构)决定,而不是行号。但是对于人类程序员来说,这要是看功能的话只能去找{}和;了,非常头大,所以我们才要去分行写,即使他没有程序行的概念。
没有程序行这一点与行号相对应,比如经典的 BASIC 编程,作为一种直译式的编程语言,在完成编写后不须经由编译及连结等手续即可执行。他就必须严格按照一行只有一条语句,或者每行代码必须严格对应一个“程序行”,否则会报错。例如
1 | 10 PRINT "HELLO" ' 第10行 |
这里的行号是语言本身的语法组成部分,程序会严格按照行号顺序执行。
而我们的C语言的语句可以跨多行书写,也可以在一行中写多条语句(用分号分隔)。例如:
1 | int a = 10 + |
C语言以语句为单位,而不是“程序行”。只要语句的语法正确(如以分号结尾),代码如何换行无关紧要。所以你甚至可以整一堆花活
3. 可使用空行和空格
先看如下实例:
1 |
|
我们把它放在 VSC 里面看看行号
我们可以清晰地看到第 2、8、11、14 行都是没有东西的,而我们的 a=10 或者 Printf 里面每个词之间加了一个空格。我们运行之后得到如下输出:
1 | The sum of 10 and 20 is 30 |
可以看到依旧可以正常运行。所以可以得出如下结论:
空行的使用:
- 在变量定义、计算逻辑和输出结果之间插入空行,将代码划分为清晰的逻辑块。
- 作用:通过视觉分隔增强代码结构,便于快速理解功能模块。
空格的使用:
- 赋值语句:
int a = 10;
中在=
两侧添加空格,使语法更易读。 - 函数调用:
printf("...")
的参数间(如, a, b, sum
)通过空格分隔,减少视觉混乱。 - 作用:通过合理间距提升代码的可读性,减少语法理解成本。
- 赋值语句:
4. 常用锯齿形书写格式
锯齿形示例如下
1 |
|
“锯齿形书写格式”通常指通过代码缩进形成的层次化结构,每一层代码向右缩进,形成类似“锯齿”的视觉效果。这种格式能清晰展示代码的嵌套关系,提升可读性。我们通常第一层级顶格,第二层级用一个 TAB 或者 4 个空格,第三层级两个 TAB 或者 8 个空格,以此类推的形成一层一层的结构。不过我更习惯 TAB,谁会去没事按空格呢。
四、结构特点
1. 函数与主函数
程序组成
C 语言程序由一个或多个函数组成,每个函数负责特定任务。
示例:1
void printHello() { printf("Hello, World!\n"); } // 辅助函数
主函数唯一性
程序必须且只能有一个主函数main()
,它是程序的入口点。
示例:1
int main() { ... } // 必须存在且唯一
执行流程
程序从main()
开始执行,其他函数通过嵌套调用执行。
完整示例:1
2
3
4
5
6
7
8
void printHello() { printf("Hello, World!\n"); }
int main() {
printHello(); // 调用辅助函数
return 0;
}
2. 程序语句
- 语句定义
C 程序由语句构成,每条语句执行一个操作。 - 分号终止符
每条语句必须以分号;
结尾。
示例:1
2
3int a = 5; // 变量声明与初始化
a = a + 1; // 表达式语句
printf("%d\n", a); // 函数调用语句
3. 注释
- 注释语法
使用/* ... */
表示多行注释,不能嵌套。 - 编译忽略
注释内容在编译时会被忽略,不生成代码。
示例:1
2
3
4
5
6
7
8
int main() {
/* 这是多行注释,不会被编译 */
int x = 10; // 单行注释(// 语法也可用)
printf("x = %d\n", x);
return 0;
}
4. 预编译命令
预编译命令以 #
开头,用于在编译前对代码进行处理(如包含头文件、定义宏等)。以下是常见预编译命令及示例:
1. #include
作用:包含头文件,引入外部函数、宏定义或类型声明。
示例:
1 |
2. #define
作用:定义宏(常量或代码片段)。
示例:
1 |
|
3. 条件编译命令
用于根据条件编译不同代码块,常见命令包括:
- **
#ifdef
/#ifndef
**:检查宏是否定义。 - **
#if
/#elif
/#else
**:根据条件判断。 - **
#endif
**:结束条件编译。
示例:
1 |
|
- 标题: C语言 - 第二章第一节 - C程序设计的初步知识
- 作者: 亓翎_Re-TikaRa
- 创建于 : 2025-04-16 12:04:35
- 更新于 : 2025-04-16 12:06:41
- 链接: https://re-tikara.fun/posts/630d8f1f/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。