亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

實例講解在C++的函數(shù)中變量參數(shù)及默認(rèn)參數(shù)的使用

2020-05-23 14:10:05
字體:
供稿:網(wǎng)友
這篇文章主要介紹了在C++的函數(shù)中變量參數(shù)及默認(rèn)參數(shù)的使用,是C++函數(shù)入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
 

包含變量參數(shù)列表的函數(shù)
如果函數(shù)聲明中最后一個成員是省略號 (...),則函數(shù)聲明可采用數(shù)量可變的參數(shù)。在這些情況下,C++ 只為顯式聲明的參數(shù)提供類型檢查。即使參數(shù)的數(shù)量和類型是可變的,在需要使函數(shù)泛化時也可使用變量參數(shù)列表。函數(shù)的系列是一個使用變量參數(shù)列表的函數(shù)的示例。printfargument-declaration-list
包含變量參數(shù)的函數(shù)
若要訪問聲明后的參數(shù),請使用包含在標(biāo)準(zhǔn)包含文件 STDARG.H 中的宏(如下所述)。

采用數(shù)量可變的參數(shù)的函數(shù)聲明至少需要一個占位符參數(shù)(即使不使用它)。如果未提供此占位符參數(shù),則無法訪問其余參數(shù)。
當(dāng) char 類型的參數(shù)作為變量參數(shù)進(jìn)行傳遞時,它們將被轉(zhuǎn)換為 int 類型。同樣,當(dāng) float 類型的參數(shù)作為變量參數(shù)進(jìn)行傳遞時,它們將被轉(zhuǎn)換為 double 類型。其他類型的參數(shù)受常見整型和浮點型提升的限制。

使用參數(shù)列表中的省略號 (...) 來聲明需要變量列表的函數(shù)。使用在 STDARG.H 包含文件中描述的類型與宏來訪問變量列表所傳遞的參數(shù)。有關(guān)這些宏的詳細(xì)信息,請參閱 va_arg、va_copy、va_end、va_start。(處于 C 運行時庫文檔中)。
以下示例演示如何將宏與類型一起使用(在 STDARG.H 中聲明):va_listva_endva_argva_start

// variable_argument_lists.cpp#include <stdio.h>#include <stdarg.h>// Declaration, but not definition, of ShowVar.void ShowVar( char *szTypes, ... );int main() {  ShowVar( "fcsi", 32.4f, 'a', "Test string", 4 );}// ShowVar takes a format string of the form//  "ifcs", where each character specifies the//  type of the argument in that position.//// i = int// f = float// c = char// s = string (char *)//// Following the format specification is a variable // list of arguments. Each argument corresponds to // a format character in the format string to which // the szTypes parameter points void ShowVar( char *szTypes, ... ) {  va_list vl;  int i;  // szTypes is the last argument specified; you must access   // all others using the variable-argument macros.  va_start( vl, szTypes );  // Step through the list.  for( i = 0; szTypes[i] != '/0'; ++i ) {   union Printable_t {     int   i;     float  f;     char  c;     char  *s;   } Printable;   switch( szTypes[i] ) {  // Type to expect.     case 'i':      Printable.i = va_arg( vl, int );      printf_s( "%i/n", Printable.i );     break;     case 'f':       Printable.f = va_arg( vl, double );       printf_s( "%f/n", Printable.f );     break;     case 'c':       Printable.c = va_arg( vl, char );       printf_s( "%c/n", Printable.c );     break;     case 's':       Printable.s = va_arg( vl, char * );       printf_s( "%s/n", Printable.s );     break;     default:     break;   }  }  va_end( vl );}//Output: // 32.400002// a// Test string

上一個示例演示以下重要概念:
在訪問任何變量參數(shù)前,必須建立一個列表標(biāo)記作為類型 va_list 的變量。在前面的示例中,該標(biāo)記稱為 vl。
使用 va_arg 宏訪問各個參數(shù)。必須告知 va_arg 宏要檢索的參數(shù)的類型,以便它可以從堆棧中傳輸正確的字節(jié)數(shù)。如果為 va_arg 指定的大小的類型與通過調(diào)用程序提供的類型不同,則結(jié)果是不可預(yù)知的。
應(yīng)將使用 va_arg 宏獲取的結(jié)果顯式強(qiáng)制轉(zhuǎn)換為所需類型。
必須調(diào)用宏以終止可變參數(shù)處理。va_end


默認(rèn)參數(shù)
在許多情況下,函數(shù)具有不常使用的參數(shù),因為使用默認(rèn)值便已足夠。為了解決此問題,默認(rèn)參數(shù)工具允許為函數(shù)僅指定在給定調(diào)用中有意義的參數(shù)。為了闡釋此概念,請考慮函數(shù)重載中所示的示例。

// Prototype three print functions.int print( char *s );         // Print a string.int print( double dvalue );      // Print a double.int print( double dvalue, int prec ); // Print a double with a// given precision.

在許多應(yīng)用程序中,可為 prec 提供合理的默認(rèn)值,從而消除對兩個函數(shù)的需求:

// Prototype two print functions.int print( char *s );          // Print a string.int print( double dvalue, int prec=2 ); // Print a double with a// given precision.

略微更改了 print 函數(shù)的實現(xiàn)以反映類型 double 僅存在一個此類函數(shù)這一事實:

// default_arguments.cpp// compile with: /EHsc /c// Print a double in specified precision.// Positive numbers for precision indicate how many digits// precision after the decimal point to show. Negative// numbers for precision indicate where to round the number// to the left of the decimal point.#include <iostream>#include <math.h>using namespace std;int print( double dvalue, int prec ) {  // Use table-lookup for rounding/truncation.  static const double rgPow10[] = {    10E-7, 10E-6, 10E-5, 10E-4, 10E-3, 10E-2, 10E-1, 10E0,     10E1, 10E2, 10E3, 10E4, 10E5, 10E6  };  const int iPowZero = 6;  // If precision out of range, just print the number.  if( prec >= -6 && prec <= 7 )   // Scale, truncate, then rescale.   dvalue = floor( dvalue / rgPow10[iPowZero - prec] ) *   rgPow10[iPowZero - prec];  cout << dvalue << endl;  return cout.good();}

若要調(diào)用新的 print 函數(shù),請使用如下代碼:

print( d );  // Precision of 2 supplied by default argument.print( d, 0 ); // Override default argument to achieve other// results.

使用默認(rèn)參數(shù)時,請注意以下幾點:
默認(rèn)參數(shù)僅在其中省略了尾隨參數(shù)的函數(shù)調(diào)用中使用 - 它們必須是最后的參數(shù)。因此,以下代碼是非法的:

int print( double dvalue = 0.0, int prec );

默認(rèn)參數(shù)不能在以后的聲明中重新定義,即使重新定義的參數(shù)與原始參數(shù)相同也是如此。因此,以下代碼將生成錯誤:

// Prototype for print function.int print( double dvalue, int prec = 2 );...// Definition for print function.int print( double dvalue, int prec = 2 ){...}

此代碼的問題在于定義中的函數(shù)聲明重新定義了 prec 的默認(rèn)參數(shù)。
以后的聲明可添加額外的默認(rèn)參數(shù)。
可為指向函數(shù)的指針提供默認(rèn)參數(shù)。例如:

int (*pShowIntVal)( int i = 0 );


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国产免费黄视频| 久久影院电视剧免费观看| 国产国语videosex另类| 666精品在线| 岛国一区二区在线观看| 欧美经典影片视频网站| 免费黄网站在线观看| mm131丰满少妇人体欣赏图| 99久久99久久久精品齐齐| 欧美在线综合视频| 少妇又紧又色又爽又刺激视频| 性爽视频在线| 日本男人天堂网| 国产精品自在在线| 日韩欧美一级| 欧美高清69hd| 亚洲欧美文学| 一区二区精品视频| 初高中福利视频网站| 久久99精品久久久久婷婷| 成人在线免费高清视频| 一区二区三区免费高清视频| 99精品人妻少妇一区二区| 亚洲最大视频网| 日本精品600av| 亚洲国产精品精华液网站| 99视频免费观看| 国产精品乱码一区二区视频| www.超碰97.com| 亚洲成a人v欧美综合天堂| 在线观看亚洲大片短视频| 精品亚洲男同gayvideo网站| 大陆av在线播放| 亚洲精品视频专区| 欧美人与动性xxxxbbbb| 影音先锋在线一区| 色婷婷久久一区二区三区麻豆| 亚洲AV成人无码一二三区在线| 精品无人区一区二区三区| 91中文字幕在线播放| 国内自拍视频在线观看| 精品免费日产一区一区三区免费| www.青青草| 久色国产在线| 亚洲男女自偷自拍图片另类| 国产成人精品一区二区在线小狼| 精品一区二区三区蜜桃| 五月久久久综合一区二区小说| 91九色鹿精品国产综合久久香蕉| 99久久精品国产亚洲精品| 国产精品无码电影| 最近中文字幕av免费高清| 四虎影视永久免费观看| 国产欧美午夜| 日韩中文在线观看| 黄色一级片在线免费观看| 成人免费网站在线看| 成人性生交大片免费观看网站| 日本精品一区二区三区在线观看视频| 亚洲在线观看| 欧美v亚洲v| www.视频一区| 男人天堂视频在线| 黄色网免费看| 久草免费福利视频| 亚洲第一网站| jizz18女人| 精品久久久久久久人人人人传媒| 欧美一区二区三区人| 老司机在线精品视频| 亚洲免费电影在线观看| 青青艹在线观看| 亚洲欧美日韩在线播放| 18av千部影片| 成人在线视频你懂的| 亚洲在线免费播放| 亚洲国产99| 一不卡在线视频| 99热一区二区三区| 久草在线官网| av网站有哪些| 久久久久久国产精品视频| 三级网站视频在在线播放| 未来日记在线观看| 国色天香一二三期区别大象| 超碰高清在线| 国产欧美一区二区三区小说| 国产乱肥老妇国产一区二| 欧美性生交大片| 欧美xxxxbb| 国产一区调教| av超碰免费在线| 亚洲成人手机在线| youjizz.com在线观看| 1204国产成人精品视频| 狠狠操一区二区三区| 666欧美在线视频| a欧美人片人妖| 99.玖玖.com| h视频免费观看| 永久免费网站视频在线观看| 国产超碰人人模人人爽人人添| 国产精品久久久久aaaa樱花| 精品一区二区三区视频在线观看| 五月天婷婷在线观看视频| 欧美久久久久久久久久久久| 欧美日韩免费做爰大片| www.麻豆av.com| 精品国产一区二区三区在线| 亚洲欧美日韩网站| 亚洲欧洲中文日韩久久av乱码| 国产成人亚洲综合小说区| 欧美日韩五区| 91精品久久久久久久久不口人| 久久精品人人做人人爽电影蜜月| 日本韩国视频一区二区| 日韩精品一区二区三区中文字幕| 天堂一区二区在线免费观看| 日本视频网站在线观看| 男人天堂新网址| 中文精品久久久久人妻不卡| 欧美美女色图| 亚洲欧洲精品一区二区三区波多野1战4| 亚洲精品日产aⅴ| 欧美激情1区2区3区| 国产激情999| 性欧美xxxx视频在线观看| 牛牛影视一区二区三区免费看| 亚洲午夜国产成人av电影男同| 国产精品免费看久久久无码| 男人的天堂va免费视频| 呦呦视频在线观看| 日韩免费一区二区三区| 国产永久免费| 香蕉视频成人在线观看| 粉色视频免费看| 香蕉成人在线| 日韩欧美你懂的| 免费电影网站在线视频观看福利| 欧美精品亚洲二区| 国产精品久久久久久久app| 中文精品一区二区| 欧美老女人性生活视频| 99国产精品一区二区三区| 国产精品麻豆va在线播放| 欧美专区一二三| 中文字幕第五页| 先锋男人资源站| 亚洲精品国产suv一区88| 午夜综合激情| 国产成人无码一区二区三区在线| 欧美日韩亚洲精品内裤| 欧美另类高清视频在线| 91网站视频在线观看| 95精品视频在线| 91在线porny国产在线看| 久久精品夜色噜噜亚洲a∨| 日韩欧美一区二区一幕| 久久久久亚洲av片无码v| 国产在线资源一区| 欧美日韩久久久久久| 91精品啪在线观看国产81旧版| 亚洲精品乱码久久久久久久久久久久| 国产精品影院在线观看| 欧美午夜丰满在线18影院| 国产午夜精品美女视频明星a级| 少妇精品久久久一区二区三区| 91女主播在线观看| 免费的很黄很污的视频网站| 日韩一级片在线播放| 亚州av综合色区无码一区| 香港成人在线视频| 亚洲青青一区| 韩国三级hd中文字幕有哪些| 国产精品综合激情| 国产成人a亚洲精品| 91老司机福利 在线| 人妻av无码一区二区三区| 国产一区 二区| 91亚洲视频在线观看| 国产精一区二区三区| 精品视频在线免费| www.日韩不卡电影av| 亚洲老妇色熟女老太| 91社影院在线观看| 777久久精品一区二区三区无码| av中文字幕网址| 久久亚洲av午夜福利精品一区| 日韩一区在线播放| 麻豆视频久久| 国产精品久久久久久久龚玥菲| 91亚洲精品久久久蜜桃| 欧美精品色图| 日韩欧美一卡二卡| 精品一二三区| 欧美日韩精品免费观看视欧美高清免费大片| 亚洲一区二区成人在线观看| 亚洲欧美成人vr| 欧美久久精品| 粉嫩欧美一区二区三区| 免费av网址在线| 欧美婷婷在线| 久久久久se| 资源视频在线播放免费| 日本一区二区免费电影| 日韩精品一区二区三区在线视频| 在线成人一区| 在线国产亚洲欧美| 寂寞护士中文字幕mp4| 精品一区二区成人精品| 国产乱码精品一品二品| 久久亚洲AV无码专区成人国产| 三级理论午夜在线观看| 国产亚洲欧美视频| av高清在线观看| 99热这里只有精品2| 亚洲女娇小黑人粗硬| 日韩女优av电影在线观看| 夜色资源网av在先锋网站观看| 亚洲一区二区在线| 伊人精品在线观看| 91久久嫩草影院一区二区| 在线观看免费黄视频| 欧美激情一级精品国产| 精品国产一区二区三区四区| 欧美1级片网站| 欧美oldwomenvideos| 少妇特黄a一区二区三区| www.射射射| 亚洲自拍偷拍色片视频| 庆余年2免费日韩剧观看大牛| 日韩av在线播放不卡| 亚洲综合一二三| 麻豆国产一区二区| 一区二区三区欧美视频| 日韩欧美国产黄色| 成人免费看片视频在线观看| 精品人妻无码中文字幕18禁| 黄色动漫免费网站| 亚洲v日韩v欧美v综合| 成人观看高清在线观看免费| 极品视频在线| av不卡在线观看| 欧美黄色www| 亚洲老妇xxxxxx| 在线观看av网站| 69久久夜色精品国产69乱青草| 色综合天天视频在线观看| 高清国语自产拍免费一区二区三区| 精品久久久久中文字幕小说| 在线免费看污网站| 国产一级一片免费播放放a| 国产精品久久久一区| 日韩毛片在线观看| 欧美精品乱人伦久久久久久| av一区在线播放| 久久国产精品色av免费看| 黄网站免费久久| 国产污污在线观看| 99视频国产精品免费观看a| 亚洲精品成人在线| 欧美人成在线视频| 香蕉视频官网在线观看日本一区二区| 先锋影音av中文字幕| 岛国片免费看| 国产污视频在线看| 欧美亚洲大片| 女女百合国产免费网站| 亚洲专区中文字幕| 精品久久久久久久久久久久包黑料| 国产成人精品免费视频网站| 亚洲欧洲第一视频| 国产精品久久久久久久久久直播| 国产精品一级无码| 91国偷自产一区二区使用方法| 玖玖玖电影综合影院| 国产黄色片免费看| 在线精品高清中文字幕| 精品国产一二区| 黄色片在线看| 国产秒拍福利视频露脸| 欧美黑人疯狂性受xxxxx野外| 精品福利影视| 日韩图片一区| 一个色综合久久| 97精品视频在线观看| 男女啪啪免费视频网站| 先锋资源av在线| 日韩欧美一区二区三区不卡视频| 中文字字幕在线中文乱码电影| 国产精品精品| 国产suv一区二区| 少妇无码一区二区三区| 国产精品18久久久久久vr| 青青青免费视频在线2| 欧美日韩一区二区电影| 国产中文一区| aaa免费在线观看| 国产精品白浆视频免费观看| 欧美一级黑人aaaaaaa做受| 日韩免费视频在线观看| 久久99精品久久久久久野外| 黄色大片网站| 国产日韩精品一区| 在线免费观看av电影| 亚洲高清视频在线播放| 91久久精品日日躁夜夜躁国产| 欧美日韩性视频| 国产精品69一区二区三区| 天堂成人在线视频| 亚洲成人天堂| 四虎国产精品成人永久免费影视| 久久国内精品一国内精品| 亚洲视频视频在线| 黄网页免费在线观看| 91精品在线麻豆| 免费成人在线视频观看| 天天天干夜夜夜操| 四虎精品视频| 亚洲国产三级| 日韩中文字幕不卡| 99免费视频| 日本黄色中文字幕| 福利小视频在线观看| 亚洲欧美综合国产精品一区| 性色av一区二区三区免费| 国产麻豆剧传媒精品国产av| 国产乱码精品一区二区三区日韩精品|