c語言 怎麼寫 可變 引數函式,c語言如何定義一個可變引數函式 如何呼叫其輸入的引數 分別

2021-03-19 18:37:32 字數 2866 閱讀 4544

1樓:匿名使用者

#include //可變引數襲函bai數必要的du標頭檔案#include

long int sum(unsigned int argc,...)    //可變引數函式必須包含至少一個確定的引數

{zhilong int srt=0;

int va;

unsigned int i;

va_list vl;                        //用於指向可dao變引數列表

va_start(vl,argc);                 //初始化,va_start()呼叫的第一個引數是所編寫的可變引數函式的最後一個確定的引數

for (i = 0; i

2樓:匿名使用者

許多程式設計語言中,可以將一段經常需要使用的**封裝起來,在需要使用回時可以直接呼叫,答這就是程式中的函式。如c語言中:

int max(int x,int y)

就是一段比較兩數大小的函式,函式有引數與返回值。c++程式設計中的函式可以分為兩類:帶引數的函式和不帶引數的函式。這兩種引數的宣告、定義也不一樣。

帶有(一個)引數的函式的宣告:

型別名標示符+函式名+(型別標示符+引數)不帶引數的函式的宣告:

void+函式名( )

花括號內為函式體。

帶引數的函式有返回值,不帶引數的沒有返回值。

c++中函式的呼叫:函式必須宣告後才可以被呼叫。呼叫格式為:

函式名(實參)呼叫時函式名後的小括號中的實參必須和宣告函式時的函式括號中的形參個數相同。有返回值的函式可以進行計算,也可以做為右值進行賦值。

c語言中的部分函式:

main(主函式)

max(求最大數的函式)

scanf(輸入函式)

printf(輸出函式)

韋宵汨助休鑄琯版泫哎維底香戈速燮純坐焜嵋服

c語言如何定義一個可變引數函式 如何呼叫其輸入的引數 分別

3樓:匿名使用者

有專門的巨集,處理可變參

void va_start( va_list arg_ptr, prev_param );

type va_arg( va_list arg_ptr, type );

void va_end( va_list arg_ptr );

一個簡單的例子

void ******_va_fun(int i, ...)int main()

4樓:圭仁丘妍

傳值呼叫

和引用呼叫  傳值呼叫和引用呼叫指的是用於引數傳遞過程中的一種機制。傳值呼叫中,只使用了實參的值。傳值呼叫機制裡,形參是一個區域性變數,其初始值為相應實參的值。

在引用呼叫機制裡,將實參的地址傳遞給形參,從表面上看是以實參變數取代形參,因此任何發生在形參上的改變實際上都發生在實參變數上。

形參的作用是實現主調函式與被調函式之間的聯絡,通常將函式所處理的資料,影響函式功能的因素或者函式處理的結果作為形參。沒有形參的函式在形參表的位置應該寫void.main

函式也可以有形參和返回值,其形參也稱為命令列引數,由作業系統在啟動程式時初始化,其返回值傳遞給作業系統。

形參和實參的對照例項(c語言版)  main()    ints(intn)

c語言如何封裝一個帶有可變引數的方法?

5樓:匿名使用者

需要借用c語言的va_list 巨集定義,及相關操作來實現可變引數。

va_list 所在標頭檔案:#include ,用法如下:

(1)首先在函式裡定義一具va_list型的變數,這個變數是指向引數的指標;

(2)然後用va_start巨集初始化剛定義的va_list變數;

(3)然後用va_arg返回可變的引數,va_arg的第二個引數是你要返回的引數的型別(如果函式有多個可變引數的,依次呼叫va_arg獲取各個引數);

(4)最後用va_end巨集結束可變引數的獲取。

以下是一個自定義列印介面的實現:

int my_printf(const char *fmt, ...)//...表示引數可變

6樓:匿名使用者

第一,c裡沒有方法,只有函式

第二,可以使用vsprintf來代替sprintf

7樓:安藤沙耶香

因為va_start, va_arg, va_end等定義成巨集,所以它顯得很愚蠢, 可變引數的型別和個數完全在該函式中由程式**控制,它並不能智慧地識別不同引數的個數和型別。

有人會問:那麼printf中不是實現了智慧識別引數嗎?那是因為函式printf()是從固定引數format字串來分析出引數的型別,再呼叫va_arg的來獲取可變引數的。

也就是說,你想實現智慧識別可變引數的話是要通過在自己的程式裡作判斷來實現的。

另外有一個問題,因為編譯器對可變引數的函式的原型檢查不夠嚴格,對程式設計查錯不利。如果******_va_fun()改為:

如何在c語言中定義引數數目可變的函式

8樓:

定義如下:

《函式返回值> 函式名(形參1, 形參2, ...)舉例說明:

int  func(int a, int b, ...)printf()函式就是一個引數版

可變的函式,其函式原型

權為:int printf (const char *__format, ...);

如何在C語言中定義引數數目可變的函式

定義如下 函式返回值 函式名 形參1,形參2,舉例說明 int func int a,int b,printf 函式就是一個引數版 可變的函式,其函式原型 權為 int printf const char format,c語言中如何實現可變參函式 c語言中可變參函式實現,主要通過va list巨集及...

C語言函式呼叫引數傳遞的是什麼,在C語言裡向函式傳遞的是「引數」是什麼意思

c語言傳遞的是值而不是地址,這一點從vb轉過來的程式設計師一定要注意。否則不經版 意間就會犯權錯誤。另外下層函式修改上層函式變數不是一種好習慣,容易引發錯誤。c語言中函式可以返回一個函式值,如果你需要返回多個函式值可以用下面的形式 fun int a,int b main 如果按vb的習慣,fun ...

c語言swith函式,c語言 這個函式怎麼用switch語句來寫?

你用的工具報錯 在每段錯誤資訊後面都寫的很清楚 什麼錯誤 錯在哪 大哥,switch 是這樣寫的,不是 swith 沒看出來那少,是不是輸入法不對啊。你統一用英文輸入法把分號都改一遍試試。呵呵,學c語言得比女人還要小心啊,你用的什麼系統,關鍵字顏色都不一樣的,不清楚嗎 c語言中的switch是什麼意...