C语言函数传参与预处理详解 1. 函数传参在C语言中函数参数的传递方式主要有两种值传递和地址传递。1.1 值传递值传递是C语言默认的参数传递方式。函数调用时将实参的值复制一份给形参形参和实参在内存中是两个独立的变量。#include stdio.h void swap(int a, int b) { int temp a; a b; b temp; printf(函数内a%d, b%d\n, a, b); } int main() { int x 10, y 20; swap(x, y); printf(主函数x%d, y%d\n, x, y); return 0; }输出结果函数内a20, b10 主函数x10, y20可以看到函数内交换了形参a和b的值但实参x和y的值没有改变。1.2 地址传递通过传递变量的地址指针可以在函数内部修改实参的值。#include stdio.h void swap(int *a, int *b) { int temp *a; *a *b; *b temp; } int main() { int x 10, y 20; swap(x, y); printf(交换后x%d, y%d\n, x, y); return 0; }输出结果交换后x20, y102. 预处理C语言的预处理是在编译之前进行的文本替换和处理以#开头的指令都是预处理指令。2.1 宏定义#define宏定义分为两种不带参数的宏和带参数的宏。2.1.1 不带参数的宏#define PI 3.14159 #define MAX_SIZE 100 int main() { double area PI * 5.0 * 5.0; int array[MAX_SIZE]; return 0; }2.1.2 带参数的宏#define SQUARE(x) ((x) * (x)) #define MAX(a, b) ((a) (b) ? (a) : (b)) int main() { int num 5; int square SQUARE(num); // 展开为 ((5) * (5)) int max MAX(10, 20); // 展开为 ((10) (20) ? (10) : (20)) return 0; }注意带参数的宏要小心使用每个参数和整个表达式都要用括号括起来避免优先级问题。2.2 文件包含#include将指定文件的内容插入到当前文件中。#include stdio.h // 系统头文件用尖括号 #include myheader.h // 用户头文件用双引号2.3 条件编译根据条件决定是否编译某段代码。#define DEBUG 1 #if DEBUG printf(调试信息\n); #endif #ifdef WINDOWS // Windows平台代码 #elif defined(LINUX) // Linux平台代码 #else // 其他平台代码 #endif3. 学习总结今天学习的重点函数传参理解值传递和地址传递的区别掌握指针在函数参数中的应用。预处理掌握宏定义、文件包含和条件编译的基本用法。实践建议多写代码验证不同传参方式的效果理解宏展开的机制。通过今天的学习你应该能够正确使用值传递和地址传递编写带参数和不带参数的宏使用条件编译控制代码的编译过程

相关新闻

最新新闻

Java Arrays工具类深度解析:从核心方法到性能优化实战

Java Arrays工具类深度解析:从核心方法到性能优化实战

1. 项目概述:为什么我们需要深入理解Arrays工具类?在Java开发中,数组(Array)是最基础、最高效的数据结构之一。但如果你只用过它的基础语法,比如int[] arr new int[10];,然后通过arr[0] 1;来赋…

2026/7/31 6:12:26
C++函数高级特性:默认参数、占位参数与重载实战解析

C++函数高级特性:默认参数、占位参数与重载实战解析

1. 项目概述:为什么需要这些高级函数特性? 在C的世界里,函数是构建程序逻辑的基石。当你从“Hello World”迈入实际项目开发,很快就会发现,仅仅会写一个简单的 int add(int a, int b) 是远远不够的。代码的灵活性、可…

2026/7/31 6:12:26
Julia语言安装与卸载全攻略:从环境配置到彻底清理

Julia语言安装与卸载全攻略:从环境配置到彻底清理

1. 项目概述:为什么选择Julia,以及如何正确管理它 最近几年,在数据科学和高性能计算圈子里,Julia语言的热度一直居高不下。它被设计成要兼具Python的易用性、C的速度以及R的统计能力,口号“像Python一样写&#xff0c…

2026/7/31 6:12:26
安卓对讲应用黑屏起麦难题:从WakeLock到ADB的完整解决方案

安卓对讲应用黑屏起麦难题:从WakeLock到ADB的完整解决方案

1. 项目概述:当对讲机应用遇上“黑屏”难题最近在折腾一个挺有意思的事儿,给几台老旧的安卓设备(其实就是一些退役的安卓手机和平板)安装“滔滔对讲”应用,想改造成低成本的车队或户外活动对讲终端。这个想法听起来挺美…

2026/7/31 6:12:26
开发者视频压缩指南:ffmpeg vs 浏览器工具——哪个更省时间?

开发者视频压缩指南:ffmpeg vs 浏览器工具——哪个更省时间?

作为开发者,我们处理视频文件的频率比想象中高得多。Bug 报告的录屏、给客户的演示视频、文档教程素材、包含视频数据的 API 响应——例子不胜枚举。每次都遇到同一个问题:文件太大,无法分享、上传或嵌入。传统解决方案是 ffmpeg,…

2026/7/31 6:12:26
三防漆选型与验证实战指南:从材料特性到可靠性测试全解析

三防漆选型与验证实战指南:从材料特性到可靠性测试全解析

1. 项目概述:从“三防”到“选型验证”的实战闭环在电子制造业干了十几年,从研发到生产,再到售后,我经手过无数因为防护不到位而“阵亡”的电路板。潮湿、盐雾、霉菌、震动、化学腐蚀……这些环境因素就像电路板的“隐形杀手”&am…

2026/7/31 6:07:25

月新闻