1. 初识C语言

1. 什么是C语言?

  • C语言是一种通用的、过程式的计算机编程语言。
  • 它是由丹尼斯·里奇(Dennis Ritchie)在1969年至1973年间于贝尔实验室开发,主要用于重新实现Unix操作系统。

1.1 什么是过程式的计算机编程语言

"过程式编程"是一种编程范式,它的核心思想是:程序是为解决一个问题而设计的一系列有序的步骤或指令。

说人话就是,按顺序执行代码,先第一步,然后第二步,第三步,按照步骤来做。

类似于番茄炒蛋:

  • 第一步: 准备食材------洗番茄,打鸡蛋。
  • 第二步: 处理食材------切番茄,搅拌鸡蛋。
  • 第三步: 开火烹饪------先炒鸡蛋,盛出;再炒番茄,最后混合。
  • 第四步: 出锅装盘。

你的关注点是一系列连续的、按顺序执行的步骤 。你会把一个大问题(做菜)分解成一个个小任务(步骤),然后一步一步地去完成。这就是"过程"(Procedure),在C语言中,我们用**函数(Function)**​ 来代表这些"步骤"或"过程"。

1.2 应用领域

  • 系统编程:操作系统(如Linux、Windows内核)、驱动程序。
  • 嵌入式开发:单片机、物联网设备。
  • 编译器/解释器:许多语言(如Python、PHP)的解释器用C实现。
  • 高性能计算:游戏引擎、科学计算。
  • 跨平台开发:通过编译适配不同系统。

1.3 优缺点

优点:

  • 执行效率接近汇编语言。
  • 对硬件操作能力强。
  • 生态系统成熟,编译器、库丰富。
    缺点:
  • 手动内存管理易出错(内存泄漏、悬空指针)。
  • 缺乏面向对象特性(需自行模拟)。
  • 标准库功能相对简单(如无原生字符串类型)。

2. 第一个程序

编译器选择 :

  1. Visual Studio 官网下载:https://visualstudio.microsoft.com/zh-hans/?wt_mc_id=developermscom
  2. Microsoft Visual C++ 2010 :已经停止更新,百度网盘领取:
    https://pan.baidu.com/s/1oujzinKyYcf6mNCMeslHYQ?pwd=q7rx (解压后能看到注册码)

我用的是Microsoft Visual C++ 2010 ,因为Visual Studio 软件太大,电脑配置差,运行起来太卡了。

2.1 Microsoft Visual C++ 环境配置

调试按钮

  1. 在工具栏空白处右击 ,选择"生成 "

  2. 生成之后就会出现一个新的工具栏,点击右下角的小三角。再点击"添加或移除按钮(A)",再点击"自定义"。

  3. 此时出现一个弹框,选中"生成解决方案 ",再选中右边的"添加命令 "

  4. 此时弹出"添加命令"的弹框,左边选中"调试 ",然后选中右边"开始执行(不调试) "按下"确定"按钮,再按下外面弹框的"关闭"按钮。

  5. 此时,我们的调试按钮就出现。

新建项目

  1. 选中工具栏第一个图标,新建项目,图中红色圈出来的那个,点击"新建项目 "

  2. 此时会出现弹框,选中中间的"Win 32 控制台应用程序 ",下面写上名称 ,如需更改文件存放路径,选择第二行右边"浏览 "。

  3. 又有一个弹框,点击"下一步 "

  4. 又有一个弹框,第一次建文件要选中附件选项 的"空项目 ",点击完成。

  5. 此时左边栏就会出现新建的文件夹,点击文件左边的小三角,展开文件。右击源文件 ,选中添加 ,选中新建项

  6. 出现了一个弹框,选中中间的"C++文件 ",然后填写名称 。注:名称后面要加上.c,不然会被识别为C++文件 ,点击添加按钮

  7. 铛铛,我们新建的C文件终于出现了,可以开始我们C语言之旅了。

2.2 第一个文件

执行代码

  1. 编写代码
c 复制代码
#include <stdio.h>
int main(void)
{
    printf("hello world!");
    return 0;
}

点击Ctrl+S 保存。

  1. 点击下图红色框框里的小三角,运行程序
  2. 弹出框框,显示打印内容,运行成功。

代码解析

我们来解析下面代码的含义------它们所代表的意思。

c 复制代码
#include <stdio.h>
int main(void)
{
    printf("hello world!");
    return 0;
}

上面代码可以分为两部分,分别是#include <stdio.h>和下面其余的部分。

  1. 预处理部分: #include <stdio.h>
    代表提前找到需要用到的文件,在代码编译之前运行,找到文件才能去运行代码。
  • #:以 #开头的命令是预处理器指令
  • #include:将指定文件的内容 复制到 #include指令所在的位置,也就是将文件复制到#include的后面。这样,你可以使用其他文件中定义的函数、宏、类型等。
  • #include <文件名>:尖括号用于包含系统头文件。编译器会在系统标准路径中查找该文件。
  • stdio.h:是"Standard Input Output Header"的缩写,即标准输入输出头文件 。这个头文件包含了与输入输出相关的函数声明、宏定义和类型定义。下面的 printf就是stdio.h里的格式化输出函数。
  • 这行代码告诉编译器:"请把stdio.h文件中的所有内容复制到这里",有了这个,我们才能使用printf()等输入输出函数
  1. 业务代码:其余的代码
  • int main():定义程序的主函数,是程序的入口
    • int表示这个函数会返回一个整数(integer)
    • main是函数名,每个C程序必须有且只有一个main函数
    • 这个函数不接受任何参数
    • 这一行是程序的入口点 - 程序从这里开始执行
  • {}:在C语言中,{}花括号用来标识代码块的范围
    • 左花括号 {表示main函数的主体从这里开始
    • 右花括号 }表示main函数的主体到这里结束
    • 所有在{}之间的代码都属于main函数
  • printf("hello world!"):在屏幕上输出文本
    • printf是输出函数(print function)
    • 括号内的"hello world!"是要输出的字符串
    • 双引号""用来包围字符串内容
    • 分号;表示语句结束 - C语言中每条语句都必须以英文的分号结尾
    • 执行效果:在屏幕上显示:hello world!
  • return 0向操作系统返回程序执行状态
    • return表示函数结束并返回一个值
    • 返回值为数字,要与因为第一行声明的 int 相对应
    • 0通常表示"程序正常执行完毕"
    • 在C语言约定中:返回0表示成功,非0值表示错误代码
    • 这个返回值是给操作系统看的

代码执行流程:

预处理 → 编译 → 汇编 → 链接 → 执行

编写完代码后,代码执行流程如下:

  1. 预处理阶段:
  • 预处理器会处理以#开头的指令。首先,它找到#include <stdio.h>指令,然后将stdio.h头文件的内容(包括printf函数的声明等)插入到该指令所在的位置。
  • 经过预处理后,代码不再包含#include指令,而是被替换为头文件中的实际内容。
  1. 编译阶段:
  • 编译器将预处理后的C代码翻译成汇编语言代码。它会检查代码的语法是否正确,比如括号是否匹配,语句是否以分号结尾等。
  • 如果代码没有语法错误,编译器会生成对应的汇编代码。
  1. 汇编阶段:
  • 汇编器将汇编代码转换成机器代码(目标文件,通常是.o或.obj文件)。这个文件包含的是二进制指令,但还不能直接执行,因为可能还需要链接其他库。
  1. 链接阶段:
  • 链接器将生成的目标文件与标准库(如C标准库)中的函数进行链接。例如,我们的程序中使用了printf函数,这个函数的实际代码在C标准库中。链接器会找到printf函数的实现(通常在libc.a或类似的库文件中),并将其合并到最终的可执行文件(.exe 文件)中。

5.运行程序:

  • 当我们在操作系统中运行生成的可执行文件时,操作系统会加载该程序到内存中,然后从程序的入口点(即main函数)开始执行。
  • 程序按顺序执行main函数中的语句:
    • 遇到printf("hello world!");时,程序会调用标准库中的printf函数,将字符串"hello world!"输出到标准输出(通常是显示器)。
    • 然后执行return 0;,表示程序正常结束,并返回0给操作系统。

在文件夹中运行代码

上面提到汇编阶段会生成目标文件( .obj 文件),链接阶段生成可执行文件(.exe 文件)。

在运行完代码时,我们都能在项目文件夹中找打它们。不同的编辑器所放的位置可能不太一样,要自己找一找。如果没有看到文件后缀,参考下面图片,打开文件资源管理器,点击上面的查看标签页,选中文件扩展名,就能看到文件后缀。

  • 查看我们的目标文件( .obj 文件)
  • 查看可执行文件(.exe 文件)
  • 程序最终执行的是 可执行文件。
  1. 我们也可以在这里去运行它,在可执行文件的路径那输入cmd,按enter回车键,就会弹出命令提示符框框。
  2. 在cmd 中输入 可执行文件 名称也就是文件后缀带.exe的文件,按enter回车键就能运行文件。
相关推荐
CHANG_THE_WORLD1 小时前
Python 字符串全面解析
开发语言·python
不会c嘎嘎2 小时前
深入理解 C++ 异常机制:从原理到工程实践
开发语言·c++
永远都不秃头的程序员(互关)2 小时前
C语言 基本语法
c语言·开发语言
永远都不秃头的程序员(互关)2 小时前
Java核心技术精要:高效实践指南
java·开发语言·性能优化
是Dream呀3 小时前
Python圣诞特辑:打造一棵会唱歌、会下雪的魔法圣诞树
开发语言·python·pygame
未来之窗软件服务3 小时前
幽冥大陆(四十一)美萍V10酒店门锁SDK C#语言仙盟插件——东方仙盟筑基期
开发语言·c#·仙盟创梦ide·东方仙盟·东方仙盟sdk·酒店智能门锁·东方仙盟 vos 智能浏览器
赖small强3 小时前
【Linux C/C++开发】Linux 平台 Stack Protector 机制深度解析
linux·c语言·c++·stack protector·stack-protector·金丝雀机制
freedom_1024_4 小时前
红黑树底层原理拆解
开发语言·数据结构·b树
liu****4 小时前
3.链表讲解
c语言·开发语言·数据结构·算法·链表