變參函式
阿新 • • 發佈:2020-11-14
1.實現可變引數max_int,從若干個傳入的引數中返回最大值。
int max_int(int n, ...);
如何獲得a往後的引數列表? va_list型別的變數
如何定位a後面第一個引數的位置? va_start函式
如何獲取下一個可變引數列表中的引數? va_arg函式
如何結束整個獲取可變引數列表的動作? va_end函式
1 /************************************************************************* 2 > File Name: 7.max_int.c3 > Author: yudongqun 4 > Mail: [email protected] 5 > Created Time: Sat 14 Nov 2020 06:30:06 PM CST 6 ************************************************************************/ 7 #include <stdio.h> 8 #include <inttypes.h> 9 #include <stdarg.h> 10 //從若干個引數中,求前n個數中最大的一個11 int max_int(int n, ...) { 12 int ans = INT32_MIN;//32位整型最小值 13 va_list arg; 14 va_start(arg, n); 15 while (n--) { 16 int temp = va_arg(arg, int);//巨集 17 if (temp > ans) ans = temp; 18 } 19 va_end(arg); 20 return ans; 21 } 22 23 int main(void) { 24 printf("%d\n", max_int(3, 1, 5, 10)); 25 printf("%d\n", max_int(2, 1, 3)); 26 printf("%d\n", max_int(6, 1, 3, 5, 7, 13, 15, 17)); 27 return 0; 28 }