程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言學習020:可變參數函數,語言學習020

C語言學習020:可變參數函數,語言學習020

編輯:關於C語言

C語言學習020:可變參數函數,語言學習020


  顧名思義,可變參數函數就是參數數量可變的函數,即函數的參數數量是不確定的,比如方法getnumbertotal()我們即可以傳遞一個參數,也可以傳遞5個、6個參數

 1 #include <stdio.h>
 2 #include <stdarg.h>//實現可變參數需要的頭文件
 3 
 4 int getnumbertotal(int args,...){//可變參數要放在普通參數(args)的後面;...表示有很多個參數
 5     va_list l;//用來保存傳給函數的其他參數
 6     va_start(l,args);//表示可變參數的開始,即args參數之後的所有參數
 7     int i;
 8     int total=0;
 9     //逐一讀取可變參數
10     for(i=0;i<args;i++){
11         total+=va_arg(l,int);
12     }
13     va_end(l);//銷毀va_list
14     return total;
15 }
16 
17 int main(){
18     int result=getnumbertotal(3,11,15,9);
19     printf("total:%i\n",result);
20     result=getnumbertotal(2,11,9);
21     printf("total:%i\n",result);
22     result=getnumbertotal(5,11,9,5,13,7);
23     printf("total:%i\n",result);
24     return 0;
25 }

  使用可變參數必須注意的是: 必須包含一個普通參數

  我們可以給va_start()方法傳遞一個NULL,但是需要通過第一個參數知道可變參數的個數

  va_arg獲取可變參數的時候必須是對應的類型,否則將會出現不可預知的錯誤

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved