1. 程式人生 > 實用技巧 >變參函式

變參函式

  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.c
3 > 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 }