调用约定
当函数调用产生时
参数会传递给被调用的函数
而返回值会被返回给函数调用者
调用约定形容参数如何传递到栈中以及栈的保护形式
参数传递程序
调用栈清理
调用约定是预约义可了解为调用协定
调用约定通常用于库调用和库开发的时候
例子45-1:
#include <stdio.h>float average(int array1[],int size){ int i = 0; float avr = 0; for(i = 0;i < size; i ++) { avr += array1[i]; } return avr/size;}int main(){ int array1[] = {1,2,3,4,5}; printf("%f\n",average(array1,5));}
输入后果:
3.000000
可变参数
C语言中能够定义参数可变的函数
参数可变函数的实现依赖于stdarg.h头文件
va_list-参数汇合
va_arg-取具体参数值
va_start-示意参数拜访的开始
va-end-标识参数拜访的完结
例子45-2:
#include <stdio.h>#include "stdarg.h"float average(int n,...){ va_list args; //可变参数汇合 int i = 0; float sum = 0; va_start(args,n); //可变参数拜访开始 for(i = 0;i < n; i ++) { sum += va_arg(args,int); //从va_arg取具体参数值,取n个 } va_end(args);//参数曾经取完了 return sum/n;}int main(){ printf("%f\n",average(5,1,2,3,4,5)); printf("%f\n",average(4,1,2,3,4)); return 0;}
输入后果:
3.0000002.500000