可變引數列表函式實現

2021-07-02 12:35:45 字數 585 閱讀 8953

如題

我們在寫可變引數列表函式之前,先來了解一下什麼是可變引數列表函式。

我們在c語言程式設計中有時會遇到 一些引數個數可變的函式,例如printf()函式,其函式原型為:

int printf(const char* format,…);

它除了有乙個引數format固定以外,後面跟的引數個數和型別是可變的(用三個點「...」做引數佔位符),實際呼叫時可以有以下的形式:

printf(「%d」,i);

printf(「%s」,s);

printf("the number is %d,string is:%s",i ,s);

**如下:

#include#includevoid my_printf(char *fmt,...)

case 'c':

default:

} fmt++;

} va_end(arg);

}int main()

執行結果:

可變引數 函式 可變引數列表 1

我們在c語言程式設計中有時會遇到一些引數個數可變的函式,即函式的入參個數和型別是不確定的,例如printf 函式,其函式原型為 int printf char format,它除了有乙個引數format固定以外,後面跟的引數的個數和型別是可變的 用三個點 做引數佔位符 實際呼叫時可以有以下的形式 p...

C可變引數列表函式

c語言中可以定義接收不同的引數的函式 可變引數的函式可以接收不同數目的引數,但是需要注意的是c語言中函式的引數個數不能超過5個。可變引數的函式的原型如下int narg sum int arg num,在引數列表中至少要有乙個命名的引數。可變引數函式的實現需要用到va start va arg va...

可變引數列表的實現

在學習c語言的過程中,大家是不是和我一樣,認為printf是乙個神一樣的函式?他可以接受不同數目,不同型別的引數,他到底是怎麼實現的呢?讓我們去看一下它的源 printf源 int printf const char fmt,它採用的是可變引數列表,可變引數列表主要有以下兩個缺點 1 無法確定可變引...