核心内容摘要
海思3536 NAND扩容实战:从硬件升级到双系统引导参数调整
先看反例不用t会怎么样假设我们想交换a1和b2如果直接这么写// 错误示范没有临时变量t *a *b; // 把b的值2赋给a → 现在a2b2 *b *a; // 再把a的值已经变成2了赋给b → 最终a2b2结果是两个数都变成了 2原来的 a 的值1彻底丢了根本没完成交换再看正确逻辑t 的作用是 “暂存”t就是一个临时的 “小仓库”专门用来保存被覆盖前的值避免丢失int t *a; // 先把a的原始值1存到t里 → t1a1b2 *a *b; // 把b的值2赋给a → a2b2t1关键t还存着1 *b t; // 把t里的原始a值1赋给b → a2b1完成交换用生活例子理解你可以把这个过程想象成你有两个杯子A 杯装可乐B 杯装雪碧你想把 A 杯换成雪碧B 杯换成可乐如果直接把 B 杯的雪碧倒进 A 杯 → A 杯的可乐就没了之后再倒也只能倒雪碧所以你需要一个空杯子t先把 A 杯的可乐倒进t再把 B 杯的雪碧倒进 A 杯最后把t里的可乐倒进 B 杯 → 完美交换。
回到代码里的 swap 函数void swap(int *a, int *b) { int t *a; // t 左指针位置的原始值比如0 *a *b, *b t; // 把右指针的非0值赋给左指针再把t里的0赋给右指针 }比如之前例子里交换nums[0]0和nums[1]1t nums[0]→t0nums[0] nums[1]→nums[0]1nums[1] t→nums[1]0最终实现[0,1]→[1,0]这一步没有t就做不到。