C语言函数调用解析:参数传递的秘密
需积分: 34 102 浏览量
更新于2024-07-14
收藏 2.2MB PPT 举报
"孙老师讲解C语言中的函数调用和实参与形参的匹配规则,以及C语言的特点和简单程序的构成。"
在C语言中,函数是程序的基本模块,它们可以执行特定的任务并可能接收输入参数,即实参,同时返回结果。函数调用的一般形式是函数名后跟一对括号,括号内列出实参。在提供的代码示例中,`main()` 函数调用了名为 `f()` 的函数,并传递了两个整数作为实参,`i` 和 `i+1`。
```c
int main() {
int i = 2, p;
p = f(i, ++i); // 调用f函数,i和i+1作为实参
printf("%d", p);
}
int f(int a, int b) {
int c;
if (a > b) c = 1;
else if (a == b) c = 0;
else c = -1;
return c;
}
```
这里要注意的是,实参的值传递到形参是按位置匹配的,即 `f()` 函数的形参 `a` 和 `b` 分别接收 `main()` 中 `i` 和 `i+1` 的值。但不同编译器对于实参求值的顺序可能有所不同,例如Turbo C遵循从右至左的顺序。在上述例子中,由于 `i` 是先被递增再传递,所以实际传递的值可能是 `3` 和 `3`,导致 `f()` 返回 `0`。
在讨论函数调用的顺序时,我们需要注意,如果实参是变量,它们的计算顺序可能根据编译器的不同而变化。例如,`j=i; k=++i; p=f(j,k);` 这段代码在某些编译器下可能先计算 `++i` 再赋值给 `k`,而在其他编译器下可能先赋值给 `j` 再递增 `i`。这可能会导致不同的运行结果。
C语言的特点包括:
1. 结构化的控制语句,允许对程序流程进行精确控制。
2. 丰富的数据类型,如整型、浮点型、字符型、数组、指针、结构体和共用体等。
3. 直接内存访问和位操作能力,使得低级别的硬件操作成为可能。
4. 大量的运算符,支持多种操作。
5. 预处理功能,如宏定义和条件编译。
6. 良好的可移植性,基本代码可以在不同平台间轻松迁移。
7. 生成的目标代码效率高,程序执行速度快。
编写和运行C程序通常涉及以下步骤:
1. 使用文本编辑器创建源代码文件(如 `.c` 文件)。
2. 使用C编译器将源代码编译为对象文件(`.obj`)。
3. 链接器将对象文件转换为可执行程序(`.exe`)。
4. 可以使用调试器对程序进行调试。
常见的C语言编译器包括Turbo C和Visual C++等,后者是集成了编辑、编译、链接和调试等功能的集成开发环境(IDE)。在Visual C++中,可以创建控制台应用程序工程来编写和运行C程序。
理解C语言的函数调用机制、实参与形参的关系、编译器的差异以及程序的构建过程是学习C语言的基础,这些知识对于后续的编程实践至关重要。
2021-10-04 上传
2022-06-21 上传
2022-11-05 上传
2010-06-28 上传
357 浏览量
点击了解资源详情
点击了解资源详情
小婉青青
- 粉丝: 28
- 资源: 2万+
最新资源
- Dcd_Analysis
- half:C ++库用于半精度浮点运算。-开源
- Windows版YOLOv4目标检测:原理与源码解析
- am-ripper:转换为WAV(回送记录)
- Package tracker-crx插件
- fiches_med
- scieng:scieng 是一个用 Java 编写的机器学习框架
- 翻译工具 Crow Translate 2.8.1 x64 中.zip
- 你好,世界
- sonarqube
- boot-microservices:Spring Boot 示例项目
- 网购淘实惠 - 神价屋-crx插件
- -Feb16-23-Mar9-Project1_Resume
- SlidingUpPanelIssue
- 詹戈
- uView-UI_1.8.3.zip