1. 程式人生 > 其它 >C 函式不定引數使用

C 函式不定引數使用

技術標籤:C++

#include<stdio.h>
#include<stdarg.h>
/*函式引數的傳遞原理
函式引數是以資料結構:棧的形式存取,從右至左入棧.eg:

先介紹一下可變引數表的呼叫形式以及原理:
首先是引數的記憶體存放格式:引數存放在記憶體的堆疊段中,在執行函式的時候,從最後一個開始入棧。因此棧底高地址,棧頂低地址*/


//實現多個整數值相加
void add(int num, ...){//這裡設計是,num代表一共有幾個變參
	va_list args;
	int total=0;
	va_start(args, num);//指向變參,也就是num引數的下一個引數
/* 只有將顯式名稱的最後一個引數傳給va_start,才可以找到可變引數的首地址 也就是說需要有至少一個形參 */ while(num--){ total += va_arg(args, int);//假設全部是int型別,(這裡在獲得一個變參的值後,自動指向下一個變參) } va_end(args); //關閉args printf("total = %d\n", total); } int main(int argc, char const *argv[]) { int a=1,b=2,c=3; add(2, a, b);//兩個引數 add(3,
a, b, c);//三個引數 return 0; }

在這裡插入圖片描述