恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

C语言 预处理

  • 首页
  • 资讯中心
  • /
  • C语言 预处理

相关资讯

释放数字空间:免费开源视频压缩工具如何帮你节省90%存储空间 2026/8/2 22:04:58
【Matlab】无人机航向角精准估计仿真实现 2026/8/2 22:04:58
2026醉驾刑事律师选型指南:案件适配核心判定标准 2026/8/2 22:04:59

最新资讯

3种高效方案解决Beyond Compare 5激活难题
技术选型方法论:从困境到实践
2026 年的 AI 编码助手,分水岭不是“模型多大“,是“会不会自己干活“
王者荣耀少司缘深度攻略:从技能机制到实战技巧,实现全局0死亡
A-59F啸叫抑制的频率预测与反馈增益裕度分析
5步精通Universal-Updater:从入门到精通的完整3DS自制软件管理指南

今日推荐

无线一体式手持三维扫描仪推荐:摆脱电脑束缚的工业检测新选择
3个让你工作效率翻倍的Umi-OCR实战技巧:免费离线文字识别完全指南
[具身智能-181]:PC+服务器+具身机器人:构建具身智能从仿真到量产的闭环迭代混合架构

本周热门

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案
分布式配置中心选型实战:Nacos与Consul在创业场景下的对比
MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

C语言 预处理

发布时间:2026/8/2 22:04:57
C语言 预处理 预处理头文件引入, “” 两者差距一个是本地库另一个是文件内宏简单的文本替换 一般是用大写用 \ 连接下一行和函数传参不同简单的文本替换预处理指令在编译之前就完成报错在用的一行不会是宏定义#if #endif 先执行if语句否则执行下面防止头文件重复引用#pragma once#ifndef _*H#define _*H…#endif联合和结构体不同关键字不同union struct结构体是每个成员单独占据内存段对齐补齐联合是所有成员同时用内存段使用联合和宏判断系统是小端存储还是大端#include stdio.h #include stdbool.h #define test(name) union\ {\ int n;\ unsigned char c;\ } name{1}; { } int main() { test(u); bool a (u.c1); printf(%s\n,a?小端大端) return 0; }枚举enum types{a,b}和bool 作用功能相同。用来存放相同逻辑的标志符for(int i2;isqrt(n);i)递归函数中调用自己本身递推循环函数调用后面无代码 山上有个老和尚故事#include stdio.h #include windows.h void ditui(int n) { Sleep(1000); printf(从前有一个老和尚\n); ditui(n); } int main() { ditui(1); // n随便取值不影响循环 // 如果对n进行次数限制等同于 for 循环 }案例1求阶乘#include stdio.h int dituix(int n) { if (n 1) return n * dituix(n - 1); else return 1; } int main() { #if 0 // 使用循环 int n, sum; printf(请输入阶乘数字%d\n, n); scanf(%d, n); for (int i 1; i n; i) { sum * i; } #else // 使用递推 int n; while(1) { printf(请输入阶乘数字); scanf(%d, n); dituix(n); printf(输入阶乘数字为%d 阶乘为%d\n, n, dituix(n)); } } #endif2:斐波那契void fbnq(int n) { if(n3) retun 1; else return fbnq(n-1)fbnq(n-2); }递归先出去再回来#include stdio.h #include windows.h void ditui(int n) { if(n5) { sleep(1000); printf(从前有一个老和尚\n); ditui(n1); printf(循环结束回来\n); } } int main() { ditui(1); //让刚开始 n 1 ,以此完成递归 }案列1汉诺塔: 将A上面的圈按大小放在C上1个圈 A-C2个圈 A-B,A-C,B-C,3个圈 A-C ,A-B,C-B,A-C,B-A,B-C,A-C思路 将最下面和上面的全部分为两部分看待#include stdio.h int cnt 0; void hannuo(int n); void hannuota(int n, char began, char temp, char end); int main() { int i; while(1) { printf(请输入搬运圈个数:); scanf(%d, i); hannuo(i); printf(搬运圈%d个需要%d次:\n,i,cnt); } return 0; } void hannuo(int n) { hannuota(n, A, B, C); } void hannuota(int n, char began, char temp, char end) { if (n 0) { hannuota(n-1, began, end, temp); //将上部分先放在C上,然后放在B printf(搬运顺序为%c -- %c\n,began, end); cnt; hannuota(n-1, temp, began, end);//将上部分从B放在A上,然后放在C } }栈与队列栈区栈结构管理的数据队列 先进后出后进先出函数传参队列 先进先出案例数组实现栈#include stdio.h #include stdlib.h #include string.h int* stack; int len; void initstack(); //初始化栈 void tral(); // 遍历一下 void enterstack(int data); // 入栈 void exitstack(); // 出栈 int main() { initstack(); for (int i 0; i 10; i) { enterstack(i); tral(); } for (int i 0; i 9; i) { exitstack(); tral(); } free(stack); } void initstack() { stack NULL; len 0; } void tral() { printf(stack[%d]:, len); for (int i 0; i len; i) { printf(%d, stack[i]); } printf(\n); } void enterstack(int data) { int* ptem malloc(sizeof(int)*(len1)); //开内存 if (stack) { memcpy(ptem, stack, sizeof(int) * len); //复制已有的 free(stack); // 释放 } stack ptem; stack[len] data; len; } void exitstack() { if (len 0) --len; }多文档编程全局变量在.h 中定义 导致引用头文件变量重复使用解决方案1在.c 中定义然后使用 extern 扩展到其他.c文件中static 限制变量被拓展2不用全局变量使用参数传递

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号