news 2026/10/9 9:23:37

AI编程流水线:从随口问AI写代码到工程化开发流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI编程流水线:从随口问AI写代码到工程化开发流程

1. 为什么“随口问 AI 写代码”迟早会翻车

我刚开始用 AI 辅助写代码那阵子,跟大多数人一样:打开对话框,敲一句“帮我写个用户登录接口”,然后复制粘贴,跑通就完事。头一个月确实爽,效率翻倍。但到了第二个月,问题开始集中爆发——同一个项目里,AI 生成的登录逻辑有三套不同风格,有的用 JWT,有的用 Session,参数命名一会儿是userId一会儿是user_id,错误码定义更是各写各的。改一个 bug,牵出来五个新问题。

这不是 AI 不行,是用法不对。随口问 AI 写代码,本质上是把 AI 当成了一个“随机代码生成器”,每次对话都是独立事件,没有上下文、没有约束、没有验收标准。你得到的是一堆孤立的代码片段,而不是一个能持续演进的工程。

后来我花了大概三周时间,把整个需求开发流程重新梳理了一遍,做成了一条可复用的流水线。核心思路很简单:把 AI 从“聊天对象”变成“流水线上的一个工位”,每个工位有明确的输入、输出和验收标准。这条流水线跑顺之后,同样的需求,代码返工率从原来的 40% 降到了 8% 左右,而且新人接手也能按同样的流程走。

这篇文章就把这条流水线完整拆开讲。不管你是刚接触 AI 编程的新手,还是已经用了一段时间但觉得“越用越乱”的开发者,都能直接抄作业。我会讲清楚每个环节为什么这么设计、具体怎么操作、踩过哪些坑,以及怎么根据自己项目的情况做调整。

2. 流水线整体设计:把 AI 当成工位而不是聊天框

2.1 核心思路:从“对话驱动”到“流程驱动”

随口问 AI 的模式是对话驱动:你一句我一句,AI 根据你当前这句话来生成内容。问题是,AI 没有记忆,它不知道你上一轮定了什么规范,也不知道你项目里已经有哪些代码。你每次都得重新交代背景,交代不全就出问题。

流水线的模式是流程驱动:先把需求拆解成标准化的阶段,每个阶段定义好输入模板和输出格式,AI 只在特定阶段介入,做完就交给下一个环节。这样做的最大好处是可复用——同一个流程,换个需求照样跑,不用每次重新想“该怎么问”。

我试过两种极端:一种是完全自由对话,想怎么问怎么问;另一种是极度严格的流程,每个步骤都卡死。实测下来,中间偏严格最好用。流程框架固定,但每个环节内部留出灵活空间,让 AI 发挥它的理解能力。

2.2 流水线的五个核心阶段

整条流水线我拆成了五个阶段,每个阶段有明确的产出物:

阶段名称输入输出AI 介入程度
1需求结构化一句话需求结构化需求文档高
2技术方案设计结构化需求技术方案 + 接口定义中
3任务拆解与编排技术方案任务列表 + 依赖关系高
4代码生成与审查单个任务可运行代码 + 审查报告高
5集成验证与回归多个任务产出集成测试报告低

这个顺序不是拍脑袋定的。我试过先让 AI 直接出代码再补文档,结果就是文档和代码对不上,改代码忘了改文档,最后文档成了废纸。也试过跳过任务拆解直接让 AI 写整个模块,出来的东西看着能跑,但耦合严重,想改一个地方得动全身。

先结构化、再设计、再拆解、再生成、最后集成,这个顺序符合工程直觉:想清楚再动手,拆细了再写,写完再合。

2.3 为什么选择“流水线”而不是“多 AI 协作”

热词里有个词叫“多 AI 协作”,我专门花时间试过。让一个 AI 写代码,另一个 AI 审查,第三个 AI 写测试。听起来很美好,实际跑下来问题不少:AI 之间会互相“客气”,审查 AI 经常说“代码整体不错,建议关注边界情况”,这种废话没有价值;而且多个 AI 之间的上下文同步很麻烦,A 改了接口,B 不知道,C 还在按旧接口写测试。

流水线的思路不一样:不是让多个 AI 同时干活,而是让同一个 AI 在不同阶段干不同的活。每个阶段之间有人工确认环节,确保上一阶段的产出是可靠的,再进入下一阶段。这样既利用了 AI 的能力,又避免了 AI 之间互相干扰。

当然,如果你团队里有多个人,每个人负责不同阶段,那本质上也是流水线,只是“工位”由人来站。核心逻辑是一样的。

3. 阶段一:需求结构化——把“一句话”变成“一张表”

3.1 为什么不能直接让 AI 写代码

你给 AI 一句“帮我写个订单导出功能”,它会怎么理解?导出什么格式?CSV 还是 Excel?导出全部还是按条件筛选?数据量大了怎么办?要不要异步?权限怎么控制?这些它都不知道,但它不会问你,它会自己假设。假设错了,代码就废了。

所以第一步不是写代码,是把需求变成 AI 能准确理解的结构化描述。这一步做扎实了,后面能省掉大量返工。

3.2 结构化需求模板

我用的模板长这样,你可以直接复制:

## 需求名称 [一句话概括] ## 背景与目标 [为什么要做这个,解决什么问题] ## 功能范围 ### 包含 - [功能点1] - [功能点2] ### 不包含 - [明确排除的功能] ## 输入与输出 - 输入:[数据来源、格式、触发方式] - 输出:[数据格式、去向、成功/失败表现] ## 约束条件 - 性能:[响应时间、并发量、数据量] - 安全:[权限、脱敏、审计] - 兼容:[现有系统、接口版本] ## 验收标准 - [ ] [可验证的标准1] - [ ] [可验证的标准2]

这个模板的关键在于**“不包含”和“验收标准”**。很多人写需求只写“要做什么”,不写“不做什么”,结果 AI 自由发挥,加了一堆你不需要的功能。验收标准则是给后面的测试环节用的,没有验收标准,你都不知道代码写完了没有。

3.3 用 AI 做需求结构化的实操

把原始需求丢给 AI,附上模板,让它填充。提示词大概是这样:

你是一个资深需求分析师。请根据以下原始需求,按照我提供的模板, 输出一份结构化需求文档。对于原始需求中没有明确的信息, 请标注 [待确认],不要自行假设。 原始需求:[粘贴你的需求] 模板:[粘贴上面的模板]

这里有个关键点:让 AI 标注“待确认”,而不是让它猜。我一开始没加这个约束,AI 会把所有空白都填上,看起来完整,实际上全是假设。后来加了“待确认”标注,我一眼就能看出哪些地方需要找产品经理确认。

实测下来,一个中等复杂度的需求(比如“用户积分兑换商品”),AI 大概能填出 70% 的内容,剩下 30% 需要人工补充。这 30% 往往是最关键的业务规则,比如“积分不够时是提示还是允许部分兑换”“兑换后积分什么时候扣减”。

3.4 注意事项与实操心得

注意:结构化需求文档一定要让需求提出方确认,不能你自己看完觉得没问题就往下走。我踩过这个坑:自己觉得理解对了,写出来的文档也给 AI 看了,AI 说“没问题”,结果做出来产品经理说“这不是我要的”。AI 说没问题不代表需求方说没问题。

另一个心得是:需求文档不要写太长。我见过有人把需求文档写成几十页的 PRD,AI 读起来反而抓不住重点。控制在两页以内,核心信息用列表和表格呈现,AI 的理解准确率明显更高。

还有个小技巧:把需求文档存成 Markdown 文件,放在项目仓库里。后面每个阶段都引用这个文件,AI 每次都能读到最新版本,不会出现“AI 按旧需求写代码”的情况。

4. 阶段二:技术方案设计——让 AI 先画图纸再动工

4.1 技术方案要解决什么问题

需求结构化之后,你知道“要做什么”了,但“怎么做”还没定。技术方案阶段要回答几个问题:用什么技术栈?接口怎么定义?数据怎么存?异常怎么处理?这些定下来之后,写代码就是填空题。

我试过跳过这一步,直接让 AI 根据需求写代码。结果就是 AI 自己选了一套方案,写到一半发现跟现有系统不兼容,又得推倒重来。技术方案是给 AI 的“施工图纸”,没有图纸,它就会乱盖。

4.2 技术方案模板

## 技术方案:[需求名称] ## 技术选型 - 语言/框架:[选择及理由] - 存储:[选择及理由] - 关键依赖:[选择及理由] ## 接口定义 ### 接口1:[名称] - 路径:`POST /api/xxx` - 请求参数: | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| - 响应格式: ```json { "code": 0, "data": {}, "message": "" }
  • 错误码: | 错误码 | 含义 | 处理建议 |

数据模型

  • 表名:
  • 字段: | 字段名 | 类型 | 说明 |

核心流程

  1. [步骤1]
  2. [步骤2]

异常处理

  • [异常场景]:[处理方式]
接口定义这块特别重要。AI 写代码时,如果接口定义清晰,它生成的调用方和被调用方就能对上。如果接口定义模糊,AI 会自己编一套,最后联调时发现参数名都对不上。 ### 4.3 让 AI 参与方案设计的正确姿势 技术方案不能完全交给 AI,但可以让它做**方案对比和细节补充**。我的做法是:自己先定大方向(比如“用 RESTful 不用 GraphQL”“用 MySQL 不用 MongoDB”),然后让 AI 补充细节。 提示词示例:

你是一个后端架构师。我已经确定了以下技术方向:

  • 语言:Python + FastAPI
  • 存储:PostgreSQL
  • 缓存:Redis

请根据以下结构化需求,设计详细的接口定义和数据模型。 对于有多种实现方式的点,请列出 2-3 种方案并对比优缺点。 不要自行更改我已确定的技术方向。

结构化需求:[粘贴需求文档]

这样 AI 既发挥了它的知识优势,又不会跑偏。实测下来,AI 在接口参数设计、错误码定义、边界条件补充这几个方面特别有用,经常能想到我漏掉的场景。 ### 4.4 参数计算与选择过程 技术方案里经常涉及参数选择,比如分页大小、超时时间、重试次数。这些不能拍脑袋,得算。 举个例子:订单导出功能,假设日均订单 10 万条,导出请求集中在上午 9-10 点,峰值 QPS 大概 50。如果同步导出,单次导出 1 万条数据,数据库查询加序列化大概 2 秒,那同时 50 个请求就需要 100 秒才能处理完,用户肯定等不了。所以必须异步:请求进来先返回任务 ID,后台慢慢处理,用户轮询进度。 这个计算过程我会写进技术方案里,让 AI 知道“为什么这么设计”。AI 理解了原因,生成代码时就不会把异步逻辑写成同步的。 > 提示:技术方案里的每个参数选择,最好都附上计算过程或参考依据。AI 看到计算过程,生成代码时会更有“分寸感”,不会随便改参数。 ## 5. 阶段三:任务拆解与编排——把大象切成片 ### 5.1 为什么必须拆任务 技术方案定好了,接口和数据模型都有了,但你还是不能直接让 AI 写代码。因为一个完整功能可能涉及十几个文件、多个模块,AI 一次性生成这么多代码,质量会断崖式下降。我试过让 AI 一次性写一个完整模块,大概 800 行代码,结果里面变量命名混乱、异常处理缺失、重复代码一堆。 **拆任务的目的,是让每个 AI 生成单元足够小,小到 AI 能保持高质量输出。** 我的经验是,单个任务生成的代码控制在 200 行以内,AI 的准确率最高。 ### 5.2 任务拆解模板 ```markdown ## 任务列表:[需求名称] ### 任务1:[名称] - 依赖:无 / 任务X - 输入:[需要哪些前置产出] - 输出:[产出哪些文件/接口] - 验收:[怎么验证这个任务完成了] - 预估代码量:[行数] ### 任务2:[名称] ...

依赖关系特别重要。比如“订单查询接口”依赖“订单数据模型”,“订单导出”依赖“订单查询”。如果顺序搞反了,AI 写导出时还没有查询接口,它就会自己编一个,后面还得改。

5.3 用 AI 做任务拆解的实操

把技术方案丢给 AI,让它拆任务:

你是一个技术负责人。请根据以下技术方案,将开发工作拆解为 可独立完成的任务。每个任务需要满足: 1. 代码量不超过 200 行 2. 有明确的输入和输出 3. 标注依赖关系 4. 有可验证的验收标准 技术方案:[粘贴方案]

AI 拆出来的任务列表,我会人工过一遍,主要检查两点:一是依赖关系有没有循环,二是任务粒度是不是合适。有时候 AI 会把一个任务拆得太细,比如“定义用户模型”和“定义用户表”分成两个任务,这种就合并一下。

5.4 任务编排的排序策略

任务拆完之后,要排一个执行顺序。我的策略是按依赖关系拓扑排序,同层任务按风险从高到低排。

为什么风险高的先做?因为如果高风险任务做不出来,后面的任务可能就得调整。比如“对接第三方支付”风险高,就先做,做通了再写订单逻辑。如果反过来,订单逻辑写完了发现支付对接不了,订单逻辑可能白写。

优先级任务类型理由
1核心数据模型所有功能的基础
2高风险外部依赖不确定性最大,早暴露早解决
3核心业务逻辑项目主体价值
4辅助功能锦上添花,可延后
5优化与重构功能完整后再做

这个排序策略我用了大半年,返工率明显降低。以前经常是功能都写完了才发现某个外部依赖不通,现在高风险任务前置,问题早早就暴露了。

6. 阶段四:代码生成与审查——AI 写,AI 查,人拍板

6.1 单任务代码生成的提示词模板

到了具体写代码的环节,提示词要包含足够多的上下文。我用的模板:

你是一个资深 [语言] 开发工程师。请完成以下任务: ## 任务描述 [任务名称和描述] ## 上下文 - 项目技术栈:[技术栈] - 相关文件:[列出相关文件路径] - 接口定义:[粘贴相关接口定义] - 数据模型:[粘贴相关数据模型] ## 编码规范 - 命名:[命名规范] - 异常处理:[异常处理规范] - 日志:[日志规范] - 注释:[注释规范] ## 输出要求 - 只输出代码,不要解释 - 每个文件用 ```语言 代码块包裹 - 文件路径写在代码块上方 ## 验收标准 [粘贴该任务的验收标准]

这个模板的关键是**“上下文”和“编码规范”**。上下文让 AI 知道代码往哪放、跟谁交互;编码规范让 AI 生成的代码风格统一。我试过不加编码规范,AI 生成的代码一会儿用驼峰一会儿用下划线,看着就头疼。

6.2 代码审查的独立环节

代码生成之后,不要直接合并。我专门设了一个审查环节,让 AI 以“审查者”的身份再看一遍。提示词:

你是一个严格的代码审查员。请审查以下代码,检查: 1. 是否符合编码规范 2. 是否有边界条件遗漏 3. 是否有异常处理缺失 4. 是否有安全隐患 5. 是否有性能问题 对于每个问题,请给出: - 问题描述 - 严重程度(高/中/低) - 修改建议 代码:[粘贴代码]

这里有个技巧:审查用的 AI 对话要新开一个,不要跟生成代码用同一个对话。同一个对话里,AI 会有“自己写的东西没问题”的倾向,审查出来的问题明显偏少。新开对话,AI 没有“护犊子”心理,审查更严格。

实测下来,新开对话审查,平均每个任务能发现 3-5 个问题,其中 1-2 个是真正需要改的。同一个对话审查,平均只能发现 1-2 个问题,而且经常是“建议加个注释”这种无关痛痒的。

6.3 人工拍板:哪些问题必须改,哪些可以放

AI 审查出来的问题,不是每个都要改。我按严重程度分了三档:

严重程度处理方式示例
高必须改空指针、SQL 注入、逻辑错误
中评估后改性能优化、代码重复、命名不规范
低记录待办注释缺失、格式问题、可选优化

高严重度的问题,改完让 AI 再审查一遍,确认改对了。中严重度的问题,如果改动成本低就顺手改了,成本高就记到技术债列表里。低严重度的问题,除非时间充裕,否则先放着。

注意:不要让 AI 无限循环审查-修改-审查。我试过让 AI 反复审查同一段代码,改到第五轮的时候,AI 开始提出一些自相矛盾的建议,越改越乱。最多两轮,两轮之后人工判断。

6.4 代码生成环节的避坑经验

踩过的坑不少,挑几个典型的说:

坑一:AI 喜欢“发明”不存在的依赖。比如你项目里用的是requests库,AI 给你生成import http_client,这个库根本不存在。解决办法是在提示词里明确列出可用依赖,或者生成后跑一遍pip install检查。

坑二:AI 生成的代码“看起来对,跑起来错”。特别是涉及日期时间、编码转换、并发这些场景。我的做法是每个任务生成后,至少写一个最小可运行示例跑一遍,确认基本逻辑没问题再进入下一个任务。

坑三:AI 会“忘记”之前的约定。比如前面定了错误码从 1000 开始,写到第五个任务时 AI 从 2000 开始了。解决办法是每个任务的提示词里都带上错误码定义,让它每次都看到。

7. 阶段五:集成验证与回归——最后一道防线

7.1 集成验证要做什么

单个任务都完成之后,代码合并到一起,这时候要验证的是任务之间的交互。单个任务测试通过,不代表集成之后没问题。我遇到过好几次:A 任务返回的数据格式是{data: [...]},B 任务期望的是{list: [...]},单独测都过,合起来就报错。

集成验证主要检查:

  • 接口调用是否匹配(参数名、类型、格式)
  • 数据流转是否正确(A 的输出是不是 B 期望的输入)
  • 异常传播是否合理(A 抛的异常 B 能不能处理)
  • 并发场景是否安全(多个任务同时操作同一数据)

7.2 用 AI 生成集成测试

集成测试可以让 AI 来写,提示词:

你是一个测试工程师。请根据以下接口定义和任务列表, 生成集成测试用例。测试用例需要覆盖: 1. 正常流程 2. 边界条件 3. 异常场景 4. 并发场景 接口定义:[粘贴] 任务列表:[粘贴] 使用 [测试框架] 编写,每个用例有明确的断言。

AI 生成的测试用例,我会挑出最关键的几个手动跑一遍。特别是异常场景和并发场景,AI 写的测试有时候“太理想化”,实际跑起来才发现问题。

7.3 回归验证:确保没改坏旧功能

新功能集成之后,一定要跑一遍旧功能的回归测试。我踩过这个坑:新功能改了公共工具类的一个方法,导致旧功能出错,但旧功能的测试没跑,上线后才发现。

回归测试不需要全跑,跑核心路径就行。如果项目有 CI/CD,把回归测试挂到流水线上,每次合并自动跑。如果没有,至少手动跑一遍核心功能的冒烟测试。

7.4 常见问题速查表

问题现象可能原因排查方法解决方案
接口 404路径拼写错误对比接口定义和实际代码修正路径
参数类型错误前后端类型不一致打印请求参数和接收参数统一类型定义
数据不一致事务未回滚检查事务边界补事务注解
并发报错共享资源未加锁检查共享变量加锁或改无状态
性能下降N+1 查询打印 SQL 日志改批量查询
内存泄漏资源未释放检查连接/流关闭补 finally 块

这张表是我从实际项目中总结的,大部分集成问题都能对上。遇到新问题就加一行,慢慢就成了一套排查手册。

8. 流水线落地后的效果与持续优化

8.1 实际效果数据

这条流水线跑了大概三个月,我记录了一些数据:

指标流水线之前流水线之后变化
代码返工率约 40%约 8%下降 80%
单需求平均耗时3 天2.5 天下降 17%
联调问题数平均 12 个/需求平均 3 个/需求下降 75%
新人上手时间2 周3 天下降 78%

返工率下降最明显,因为需求和技术方案阶段就把大部分坑填了。耗时下降没那么夸张,因为前期多花了时间做结构化,但后期省了调试和返工的时间,总体还是赚的。

8.2 流水线本身的迭代

这条流水线不是一成不变的。我每个月会回顾一次,看看哪个环节经常出问题,然后调整。

比如一开始任务拆解环节没有“预估代码量”这一项,后来发现 AI 经常把一个任务写成 500 行,就加上了 200 行的限制。再比如代码审查环节一开始只查规范,后来发现安全问题也不少,就加了安全检查项。

提示:流水线是给你用的,不是给你添堵的。如果某个环节让你觉得“太麻烦”,先想想是不是可以简化,而不是直接跳过。跳过环节省的时间,后面往往要加倍还回来。

8.3 适合不同场景的调整建议

这条流水线不是死板的,不同场景可以调整:

小需求(半天以内):可以合并阶段一和阶段二,需求结构化之后直接出接口定义,跳过详细技术方案。

紧急修复:可以跳过阶段一和阶段二,直接定位问题、写修复代码、审查、验证。但修复完成后要补文档。

探索性项目:技术方案阶段可以放宽,允许 AI 尝试多种方案,快速验证可行性后再定稿。

团队协作:每个阶段可以指定不同的人负责,阶段之间用文档交接。文档就是流水线上的“传送带”。

8.4 我个人的使用体会

用了这么久,最大的体会是:AI 编程的上限不取决于 AI 有多强,而取决于你给它的输入有多清晰。你给它一句话,它还你一堆垃圾;你给它一份结构化的需求、一份详细的技术方案、一份明确的任务描述,它还你一份能用的代码。

另一个体会是:不要试图让 AI 一次做完所有事。流水线的价值就在于把大问题拆成小问题,每个小问题让 AI 在最佳状态下解决。就像工厂流水线,每个工位只做一件事,做精做透,整体效率反而最高。

最后分享一个小技巧:把这条流水线的每个阶段的提示词模板存成文件,放在项目仓库的docs/ai-workflow/目录下。每次用的时候直接复制,不用重新想。用久了你会发现,这套模板本身就是项目最有价值的资产之一——它让 AI 编程从“碰运气”变成了“可复制”。

这个流程后续还可以继续扩展,比如加入自动化测试生成、部署脚本生成、监控告警配置生成等环节。核心逻辑不变:结构化输入、分阶段处理、人工确认、持续迭代。把这套逻辑跑通,AI 就不再是一个“随口问问”的聊天对象,而是你工程流水线上一个稳定可靠的工位。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/9 9:23:22

用 Trae 快速开发微信小程序:TaoToken 统一 Key 接入与调试配置指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/9 9:22:34

Python字典哈希表扩容机制全解析:4倍扩容从何而来

你有没有遇到过这种场景:一个 Python 脚本跑着跑着内存突然飙升,你怀疑是泄漏,结果一遍遍查业务逻辑,最后发现问题出在字典内部——它悄悄做了一次“搬家”。或者你在刷题、看源码解析时,总有人提一句“Python 字典会 …

作者头像 李华
网站建设 2026/10/9 9:21:39

C++二叉搜索树详解:原理、实现与平衡树演进

二叉搜索树这玩意儿,我在刚学 C 那会儿觉得挺玄乎的,名字又长又绕。后来真在代码里用起来、又在面试里被反复问,才明白它其实是二叉树里最实用也最“亲民”的一类。这篇我打算把这个结构掰开揉碎了讲清楚,从它的设计原理、C 手写实…

作者头像 李华
网站建设 2026/10/9 9:21:03

以“大角几何”为载体:构建教师专业共同体的区域教研实践

1. 从一场"哪个角更大"的争论说起:共同体的起点是共同问题1.1 那次公开课现场:台上台下一起"卡住"三年前,我们区组织小学数学教研活动,授课内容是一节二年级的"角的大小比较"。老师准备了活动角、投…

作者头像 李华
网站建设 2026/10/9 9:19:06

免费领龙虾背后:商家获客成本账与参与避坑全指南

走在商圈里,经常能看到“免费!快来领‘龙虾’啦”这种横幅,尤其在夏季,小龙虾上市那阵子,几乎隔一条街就能碰到一家。说句大实话,这类活动能在标题里同时摆上“免费”和“龙虾”两个词,本身就自…

作者头像 李华
网站建设 2026/10/9 9:18:12

C语言变量与数据类型:从内存视角理解作用域、类型转换与指针

1. 数据类型与变量:先把C语言的地基盘清楚先不急着背关键字,我建议每个学C的朋友都先想明白一件事:C是一门贴近硬件的语言,你定义变量、选数据类型,本质上就是在和内存打交道。网上搜“C语言基础”,会冒出来…

作者头像 李华