C 语言学习笔记二

发布于:2025-05-27 ⋅ 阅读:(15) ⋅ 点赞:(0)

程序设计入门 — C 语言

老师:“C语言是编程之母,学好了它,其他语言都是弟弟!”

我:“好好好,母上大人好!”(内心OS:母上大人怎么连个 Hello World 都写不利索?)

第一周 程序设计与 C 语言

本周目标:从编程小白进阶成“能写出 Hello World 但会被自己蠢哭”的菜鸟。

6 第一个程序 HelloWord

📝6.1 C 语言笔记 | 分三步实现第一个程序 Hello World

(适合刚接触编程的小白,像学学姐手把手教学一样!😎)


🚀 第一步:创建文件
  1. 选工具:

    • 推荐用 VS Code(免费轻量)或 Visual Studio 2022(集成编译),记事本也行但没高亮。
    • ❌ 不要用Word!会乱码!
  2. 建文件(以 Visual Studio 2022 为例):

    • 点击创建新项目 。
    • 点击控制台应用后,点击下一步。
    • 项目名称改为 HelloWord
    • 位置按自己喜好修改。
    • 点击创建。
    • 将原始文件删除并添加新文件。
  3. 图片步骤如下:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

🖋️ 第二步:编写代码
  1. 敲代码

    #include<stdio.h>  // 1. 导入头文件(必须第一行!)
     
    int main() 
    {                 // 2. 主函数入口(程序从这里开始跑)
        printf("Hello World!\n");  // 3. 输出语句(\n是换行)
        return 0;       // 4. 返回0表示程序正常结束
    }
    
  2. 避坑指南

    • 🚨 报错printf未声明?→ 忘记加#include <stdio.h>
    • 🚨 报错expected ';' before '}'?→ 漏了分号;(每行结尾都要有!)。
    • 🚨 中文乱码?→ 检查编码是否为UTF-8,或暂时改用英文输出。

▶️ 第三步:运行代码

1.保存文件

  • CTRL + S

2.运行文件

  • CTRL + F5

3.结果如图所示

在这里插入图片描述


📌本节总结
  • 🔧 框架思维:先写main()骨架,再填内容,像搭积木一样。
  • 🔍 细节控:C语言对标点敏感,分号、括号、引号一个都不能错!
  • 💪 多动手:照着敲一遍,比看10遍视频管用!

下节预告Hello World 代码深度解析!🚀
(PS:第一次运行成功时,有没有觉得超有成就感?😎)

📝6.2 C 语言笔记 | Hello World 代码深度解析

(适合已写过第一个程序,想彻底搞懂每行代码含义的同学~)


🔍 代码逐行解剖
#include <stdio.h>  // 📚 头文件:程序的“工具箱”
int main() {        // 🚀 主函数:程序入口点
    printf("Hello World!\n");  // 🖨️ 输出语句:向屏幕打印内容
    return 0;       // ✅ 返回值:告诉系统程序正常结束
}

📚 1. #include <stdio.h> —— 头文件导入
  • 作用:引入标准输入输出库,让程序能用 printf(打印)、scanf(输入)等功能。
  • 类比:像做菜前要准备好调料(头文件),没有它,printf 这类“调料”就用不了。
  • 扩展:C 语言所有功能都分散在头文件中,比如数学函数在 <math.h>,字符串操作在 <string.h>

🚀 2. int main() —— 主函数
  • 结构:

    int main() {  // int 表示函数返回一个整数
        // 代码逻辑
        return 0; // 必须返回整数,0通常表示成功
    }
    
  • 关键点:

    • 所有C程序必须有一个 main 函数,且只能有一个。
    • int 表示函数会返回一个整数值给操作系统(0成功,非0表示错误代码)。
    • 花括号 {} 包裹的代码块是函数的“身体”,按顺序执行。

🖨️ 3. printf("Hello World!\n"); —— 输出语句
  • 作用:向控制台打印文本内容。
  • 细节:
    • printf 是 “print formatted” 的缩写,支持格式化输出(如 %d 输出整数)。
    • \n 是转义字符,表示换行(不写的话,后续输出会紧接在这一行后面)。
    • 字符串必须用英文双引号 "",结尾必须有分号 ;(C语言语句结束标志)。
  • 常见错误:
    • 拼写错误:pritnf → 编译器会报错“未声明标识符”。
    • 漏分号:printf("...") → 报错“expected ‘;’ before ‘}’”。

4. return 0; —— 返回值
  • 作用:告诉操作系统程序执行结果。
  • 规则:
    • main 函数必须返回 int 类型值,0 表示成功,非0值(如 1)表示异常退出。
    • 在 C99 及之后的标准中,如果 main 函数末尾省略 return 0;,编译器会自动补充。

💡 代码执行流程
  1. 程序从 main 函数开始执行。
  2. 执行 printf 输出内容。
  3. 执行 return 0 结束程序,返回值 0 告诉系统“一切正常”。

🔧 修改代码实验
  • 实验1:改输出内容

    #include<stdio.h>  
     
    int main() 
    {                
        printf("Hello C语言!\n");  // 输出:Hello C语言!
        return 0;       
    }
    
  • 实验2:去掉 \n

    #include<stdio.h>  
     
    int main() 
    {                
        printf("Hello World!");   // 输出:Hello World!(光标停在行尾不换行)
        return 0;       
    }
    

📌本节总结
  • 🔍 细节决定成败:C语言对符号(分号、引号、括号)极其敏感,漏一个就会报错。
  • 🧠 流程思维:程序是按代码顺序从上到下执行的,理解流程才能调试错误。
  • 💻 动手实践:改一行代码、删一个符号,看看报错信息,比背语法更有效!

下节预告: Hello World 文件执行流程深度解析 🚀

📝6.3 C 语言笔记 | Hello World 文件执行流程深度解析


🔍 代码执行流程:从编写到运行的完整生命周期
#include <stdio.h>  // 📚 头文件:程序的“工具箱”
int main() {        // 🚀 主函数:程序入口点
    printf("Hello World!\n");  // 🖨️ 输出语句:向屏幕打印内容
    return 0;       // ✅ 返回值:告诉系统程序正常结束
}

🔧 执行流程分步解析
  1. 预处理阶段(Preprocessing)
    • 操作:编译器首先处理 #include <stdio.h>,将标准输入输出库的代码“复制”到当前文件中。
    • 作用:相当于给程序配备“工具箱”,使 printf 等函数可用。
    • 细节:
      • 头文件本质是代码的“集合包”,stdio.h 包含了输入输出函数的声明。
      • 预处理后的文件会变得“臃肿”,因为嵌入了大量库代码。
  2. 编译阶段(Compilation)
    • 操作:将预处理后的代码翻译为汇编语言(Assembly)。
    • 作用:将人类可读的C代码转为机器能理解的底层指令。
    • 细节:
      • printf("Hello World!\n"); 会被翻译为类似 mov(数据移动)、call(函数调用)的指令。
      • 生成 .s.asm 文件(但通常隐藏,直接进入下一步)。
  3. 汇编阶段(Assembly)
    • 操作:将汇编代码转换为二进制目标文件(.o.obj)。
    • 作用:生成机器码,但此时程序仍是一个“半成品”(缺少外部依赖)。
    • 类比:像组装电脑主板,但显卡(printf 的实现)还未安装。
  4. 链接阶段(Linking)
    • 操作:链接器将目标文件与标准库(如 printf 的实现)合并,生成可执行文件(.exe.out)。
    • 关键点:
      • 解决函数调用地址问题(如 printf 的具体位置)。
      • 生成最终的可执行程序,此时程序已“完整”。
  5. 执行阶段(Execution)
    • 操作:操作系统加载可执行文件到内存,从 main 函数开始执行。
    • 流程:
      1. 执行 printf,输出 Hello World! 并换行。
      2. 执行 return 0,告诉操作系统程序正常结束。
    • 细节:
      • 若省略 return 0,C99 及之后标准会自动补充,但显式写出更规范。
      • 程序结束后,操作系统回收资源,控制权交还用户。

🔍 流程图解
编写代码 → 预处理(包含头文件) → 编译(转汇编) → 汇编(转二进制) → 链接(合并库) → 执行(运行程序)

🔧 修改代码实验
  • 实验1:改输出内容

    #include<stdio.h>  
    int main() {                
        printf("Hello C语言!\n");  // 输出:Hello C语言!
        return 0;       
    }
    
    • 结果:控制台显示 Hello C语言!(程序会说中文了!)。
  • 实验2:去掉 \n

    #include<stdio.h>  
    int main() {                
        printf("Hello World!");   // 输出:Hello World!(光标停在行尾不换行)
        return 0;       
    }
    
    • 结果:输出 Hello World! 后不换行,下次输出会紧接在后面(像排队不换行)。
  • 实验3:省略 return 0

    #include<stdio.h>  
    int main() {                
        printf("Hello World!\n");  
        // 省略 return 0;       
    }
    
    • 结果:程序仍能运行,但部分编译器会警告“not all control paths return a value”(非所有路径都返回值)。在C99及之后标准中,main 函数末尾省略 return 0 会被自动补充。

📌 本节总结
  • 🔍 流程为王:理解预处理、编译、汇编、链接、执行五步流程,比死记语法更重要。
  • 🧠 细节决定成败:C语言对符号(分号、引号、括号)极其敏感,漏一个就会报错。
  • 💻 动手实践:改一行代码、删一个符号,看看报错信息,比背语法更有效!

下节预告:注释的基本使用 🚀


网站公告

今日签到

点亮在社区的每一天
去签到