函数原型

C Primer Plus 第9章 函数 9.2 ANSI C 的函数原型

蓝咒 提交于 2019-12-01 09:55:28
9.2.1 产生的问题 下面我们讨论几个使用imax()函数的例子,该函数和imin()类似。在程序清单9.4中的程序以旧的形式声明函数imax(),然后错误的使用该函数。 程序清单9.4 misuse.c程序 /*misuse.c --不正确的使用函数*/ #include <stdio.h> int imax(); /*旧式的函数声明*/ int main(void) { printf("The maximum of %d and %d is %d.\n", 3,5,imax(3)); printf("The maximum of %d and %d is %d.\n", 3,5,imax(3.0,5.0)); return 0; } int imax(n,m) int n,m; { int max; if(n>m) max=n; else max=m; return max; } 在第一个printf()中调用函数imax()时漏掉了一个参数,而在第二次调用imax()时使用了浮点参数而不是整数参数。尽管存在这些错误,该程序仍可以编译执行。 程序运行时发生了什么?不同操作系统的内部机制不同,所以出现错误的具体情况也不相同。当使用PC或VAX时,程序执行过程是这样的: 调用函数首先把参数放在一个被称为堆栈(stack)的临时存储区域里,然后被调函数从堆栈中读取这此参数