C语言快速入门教程
首页
入门指南
基础教程
进阶教程
实战案例
编程指南
首页
入门指南
基础教程
进阶教程
实战案例
编程指南
  • 基础教程

    • Hello World 深入理解
    • 变量详解
    • 数据类型详解
    • 运算符详解
    • 输入输出详解
    • 条件判断 if-else
    • 循环语句
    • 函数详解
    • 数组详解

Hello World 深入理解

在第一个程序中,我们已经写过Hello World了。这一节我们深入理解它的每个细节。

回顾代码

#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    return 0;
}

程序执行过程

让我们看看这个程序在计算机中是如何运行的:

graph LR
    A[源代码 hello.c] --> B[预处理器]
    B --> C[编译器]
    C --> D[汇编器]
    D --> E[链接器]
    E --> F[可执行文件 hello.exe]
    F --> G[运行程序]

1. 预处理(Preprocessing)

预处理器会处理以 # 开头的指令:

#include <stdio.h>  // 预处理器会把stdio.h的内容复制到这里

2. 编译(Compilation)

编译器把C代码翻译成汇编语言。

3. 汇编(Assembly)

汇编器把汇编语言翻译成机器码。

4. 链接(Linking)

链接器把所有代码和库文件连接在一起,生成可执行文件。

深入 printf

printf 是最常用的函数之一,让我们深入了解它。

基本用法

printf("要打印的内容");

打印不同内容

#include <stdio.h>

int main() {
    // 打印文本
    printf("Hello, World!\n");
    
    // 打印数字(后面会详细讲)
    printf("我今年 18 岁\n");
    
    // 打印空行
    printf("\n");
    
    // 连续打印
    printf("第一部分");
    printf("第二部分\n");  // 输出:第一部分第二部分
    
    return 0;
}

转义字符详解

转义字符让我们能打印特殊字符:

#include <stdio.h>

int main() {
    // 换行
    printf("第一行\n第二行\n");
    
    // 制表符(Tab)
    printf("姓名\t年龄\t城市\n");
    printf("小明\t18\t北京\n");
    
    // 打印引号
    printf("他说:\"你好!\"\n");
    
    // 打印反斜杠
    printf("文件路径:C:\\Program Files\\App\n");
    
    // 退格
    printf("1234\b5\n");  // 输出:1235(4被删除)
    
    // 回车(移到行首)
    printf("Hello\rWorld\n");  // 输出:World(Hello被覆盖)
    
    return 0;
}

常用转义字符表:

转义字符含义ASCII码示例输出
\n换行10光标移到下一行
\t水平制表符9像按Tab键
\\反斜杠92\
\"双引号34"
\'单引号39'
\r回车13光标移到行首
\b退格8删除前一个字符
\0空字符0字符串结束符

注释的艺术

注释是给人看的,不会被执行。

单行注释

// 这是单行注释

int main() {
    printf("Hello\n");  // 在代码后面也可以写注释
    // printf("这行不会执行\n");
    return 0;
}

多行注释

/*
 * 这是多行注释
 * 可以写很多行
 * 用于详细说明
 */
int main() {
    printf("Hello\n");
    
    /* 这样也可以 */
    
    /*
    printf("注释掉的代码\n");
    printf("不会执行\n");
    */
    
    return 0;
}

注释的好习惯

#include <stdio.h>

// 程序功能:打印个人信息
// 作者:小明
// 日期:2024-01-01

int main() {
    // 打印欢迎信息
    printf("=== 个人信息 ===\n");
    
    // 打印姓名
    printf("姓名:小明\n");
    
    // 打印年龄
    printf("年龄:18\n");
    
    return 0;  // 程序正常结束
}

💡 注释建议

  • ✅ 解释"为什么"这样做,而不是"做了什么"
  • ✅ 复杂逻辑一定要写注释
  • ❌ 不要写废话注释:i = i + 1; // i加1
  • ❌ 不要注释掉大段代码,应该删除

代码风格

良好的代码风格让代码更易读。

缩进

// ✅ 好的缩进
int main() {
    printf("第一行\n");
    printf("第二行\n");
    return 0;
}

// ❌ 不好的缩进
int main() {
printf("第一行\n");
    printf("第二行\n");
        return 0;
}

空格

// ✅ 好的空格使用
int main() {
    int a = 10;
    int b = 20;
    int sum = a + b;
    return 0;
}

// ❌ 不好的空格使用
int main(){
    int a=10;
    int b=20;
    int sum=a+b;
    return 0;
}

命名规范

// ✅ 好的命名
int studentAge;      // 驼峰命名
int student_age;     // 下划线命名
int MAX_SIZE;        // 常量用大写

// ❌ 不好的命名
int a;               // 太简短
int xueshengAge;     // 不要用拼音
int Age;             // 变量不要大写开头

实战练习

练习1:打印个人名片

要求打印:

╔═══════════════════════╗
║    个人名片           ║
╠═══════════════════════╣
║ 姓名:张三            ║
║ 年龄:20              ║
║ 职业:程序员          ║
║ 邮箱:zhangsan@qq.com ║
╚═══════════════════════╝
查看答案
#include <stdio.h>

int main() {
    printf("╔═══════════════════════╗\n");
    printf("║    个人名片           ║\n");
    printf("╠═══════════════════════╣\n");
    printf("║ 姓名:张三            ║\n");
    printf("║ 年龄:20              ║\n");
    printf("║ 职业:程序员          ║\n");
    printf("║ 邮箱:zhangsan@qq.com ║\n");
    printf("╚═══════════════════════╝\n");
    return 0;
}

练习2:打印ASCII艺术

打印一个笑脸:

  *****
 *     *
* O   O *
*   ^   *
* \___/ *
 *     *
  *****

练习3:打印课程表

时间        周一      周二      周三
08:00     语文      数学      英语
10:00     数学      体育      语文
14:00     英语      语文      数学

小测验

  1. 以下哪个是正确的注释?

    A. // 这是注释
    B. /* 这是注释 */
    C. <!-- 这是注释 -->
    D. # 这是注释
    
  2. \n 表示什么?

    A. 字母n
    B. 换行
    C. Tab
    D. 空格
    
  3. 以下哪个会报错?

    A. printf("Hello");
    B. printf("Hello\n");
    C. printf('Hello\n');
    D. printf("He said \"Hi\"");
    
查看答案
  1. A和B都对(C是HTML注释,D是预处理指令)
  2. B(换行)
  3. C(应该用双引号,不是单引号)

下一步

现在你已经完全理解Hello World了!接下来学习变量。

👉 变量详解

最近更新: 2025/12/26 14:29
Next
变量详解