日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言 函数多个参数,C语言函数可变参数

發布時間:2024/9/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言 函数多个参数,C语言函数可变参数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C語言函數可變參數教程

可變參數的函數必須至少有一個強制參數,可選參數的類型可以變化。可選參數的數量由強制參數的值決定,或由用來定義可選參數列表的特殊值決定。

對于每一個強制參數來說,函數頭部都會顯示一個適當的參數,像普通函數聲明一樣。參數列表的格式是強制性參數在前,后面跟著一個逗號和省略號(…),這個省略號代表可選參數。

C語言函數可變參數詳解

語法

type funcName(paramType1 param1, ...){

// 執行語句...

return val

}

參數

參數

描述

type

函數的返回值類型,如果沒有任何返回值,則寫 void,不可以死省略不寫。

funcName

函數名。

paramType1

函數參數 param1 的類型

param1

函數參數

可變參數,即可以傳遞任何類型和個數的參數

return

可選,函數返回值使用的關鍵字。

val

函數需要具體返回的值。

說明

定義可變參數必須要有一個強制參數,這里的參數 param1 就是強制參數,最后的 ... 表示的是可變參數。

C語言函數可變參數使用

可變參數函數要獲取可選參數時,必須通過一個類型為 va_list 的對象,它包含了參數信息。這種類型的對象也稱為參數指針(argument pointer),它包含了棧中至少一個參數的位置。

可以使用這個參數指針從一個可選參數移動到下一個可選參數,由此,函數就可以獲取所有的可選參數。va_list 類型被定義在頭文件 stdarg.h 中。

當編寫支持參數數量可變的函數時,必須用 va_list 類型定義參數指針,以獲取可選參數。當我們處理可變參數時,主要涉及到以下幾個宏函數:

va_start

語法

void va_start(va_list argptr, lastparam);

參數

參數

描述

argptr

定義好的 va_list 變量。

lastparam

強制參數。

說明

宏 va_start 使用第一個可選參數的位置來初始化 argptr 參數指針。該宏的第二個參數必須是該函數最后一個有名稱參數的名稱。必須先調用該宏,才可以開始使用可選參數。

va_arg

語法

type va_arg(va_list argptr, type);

參數

參數

描述

argptr

定義好的 va_list 變量。

type

可變參數的具體類型。

說明

展開宏 va_arg 會得到當前 argptr 所引用的可選參數,也會將 argptr 移動到列表中的下一個參數。宏 va_arg 的第二個參數是剛剛被讀入的參數的類型。

va_end

語法

void va_end(va_list argptr);

參數

參數

描述

argptr

定義好的 va_list 變量。

說明

當不再需要使用參數指針時,必須調用宏 va_end。如果想使用宏 va_start 或者宏 va_copy 來重新初始化一個之前用過的參數指針,也必須先調用宏 va_end。

va_copy

語法

void va_copy(va_list dest, va_list src);

參數

參數

描述

dest

目的 va_list 變量。

src

源 va_list 變量。

說明

宏 va_copy 使用當前的 src 值來初始化參數指針 dest。然后就可以使用 dest 中的備份獲取可選參數列表,從 src 所引用的位置開始。

案例

函數可變參數

用函數可變參數,實現求任意變量的和

#include

#include

int mulSum(int n, ...){

int i = 0;

int sum = 0;

va_list argptr;

va_start(argptr, n); // 初始化argptr

for (i = 0; i < n; i++) // 對每個可選參數,讀取類型為int

{

sum += va_arg(argptr, int); //累加到 sum 中

}

va_end(argptr);

return sum;

}

int main(){

printf("嗨客網(www.haicoder.net)\n\n");

int mulSumRet = mulSum(4, 1, 3, 5, 8);

printf("mulSumRet = %d\n", mulSumRet);

return 0;

}

程序運行后,控制臺輸出如下:

我們定義了一個函數 mulSum,該函數的第一個參數是一個 ... 表示是可變參數。

接著,我們使用該可變參數,實現了求出我們傳入的所有數的和。

C語言函數可變參數總結

C 語言中函數的參數是支持可變參數的,即函數參數的個數是任意的。C 語言中的函數的可變參數主要依靠 va_start、va_arg 和 va_end 來實現的。

總結

以上是生活随笔為你收集整理的c语言 函数多个参数,C语言函数可变参数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。