複製鏈接
請複製以下鏈接發送給好友

...

(符號)

鎖定
“...”是英文中的省略號運算符,可以當作省略符號使用,在網絡用語中可表示無奈或無語,在c語言中可代表聲明可變參數函數或定義可變參數函數。
中文名
...
用    途
等同於“..”,“汗...”“寒.."
含    義
無語、無奈、被嚇到的意思
性    質
英文中的省略號等

目錄

...用法

使用環境
含義
英文
表示父目錄的語法。單個圓點表示當前目錄
"運行"對話框鍵入"..."可打開”文件資源管理器“。
“...”通常可以表示無語、被冷到、被傷到、被寒到等等諸多感受,或在無話可説無感受時回覆發言者.
用途
等同於“..”,“汗..”“寒..”即無語、被雷到的意思……

...運算符

...C語言中

可變參數函數(Variadic functions)是stdarg.h內容典型的應用,雖然也可以使用在其由可變參數函數調用的函數(例如,vprintf)。
聲明可變參數函數
可變參數函數的參數數量是可變動的,它使用省略號來忽略之後的參數。例如printf函數一般。代表性的聲明為:
int check(int a, double b, ...);
可變參數函數最少要有一個命名的參數,所以
char *wrong(...);
在C中是不被允許的(在C++中,這樣的聲明是合理的)。C中,省略符號之前必須要有逗號;而在C++中,則沒有這種強制要求。
定義可變參數函數
使用相同的語法來定義:
longfunc(char,double,int,...);
longfunc(chara,doubleb,intc,...)

/*...*/

//在C的舊形式中可能會出現較省略的函數定義:
longfunc();
chara;
doubleb;
longfunc(a,b,c,...)

/*...*/

訪問未命名的參數,首先必須在可變參數函數中聲明va_list類型的變量。調用va_start並傳入兩個參數:第一個參數為va_list類型的變量,第二個為省略號前最後一個有名字的參數的名稱,接着每一調用va_arg就會返回下一個參數,va_arg的第一個參數為va_list,第二個參數為返回的類型。最後va_end必須在函數返回前被va_list調用(va_list當作參數)(沒有要求要讀取完所有參數)。
C99提供額外的宏,va_copy,它能夠複製va_list。而va_copy(va2, va1)函數作用為拷貝va1到va2。
沒有機制定義該怎麼判別傳遞到函數的參數量或者數據類型。函數通常需要知道或確定它們變化的方法。共通的慣例包含:
使用printfscanf類的格式化字串來嵌入明確指定的類型。
在可變參數最後的標記值(sentinel value)。
總數變量來指明可變參數的數量。

...C++中

C++11中可變參數模板讓您能創建則樣的模板函數或模板類,即接受可變數量的參數 [1] 
聲明方法: template <typename... Types> //...
例如:
template<typenameT,typename...Args>
voidshow_list(Tvalue,Args...args)

cout<<value<<endl;
show_list(args);//遞歸調用,顯示下一項

...Java中

在編寫一個方法時,其參數隨着程序運行的條件而變化,在編譯期間無法確定。具體地講,例如編寫一個打印參加聚會party的程序,其中方法printInvitation()將根據作為參數的參加人姓名,打印邀請卡。但這個參數的數量事先並不確定。當然可以編寫許多重載的方法來解決這個問題,如:
void printInvitation(String name);
void printInvitation(String name1, Stringname2);
void printInvitation(String name1, Stringname2, String name3);
問題是編寫多少個重載的方法才可以解決給所有參加者打印邀請卡.也許需要改變您的程序設計,而使用數組或者鏈接表了。
應用可變參數可以方便、靈活地解決這類問題。例如:
void printInvitation(String...names)
for (String name : names)
(makeCard(name)); //調用方法按照姓名打印邀請卡
(System.out.println("Recording info: invitation card has been printed for " + name));
這裏,(String...names)便是可變參數。該參數包括從0到任意個相同類型的參數。在編譯期間,這個可變參數將被轉換為字符串數組形式,即:void printInvitation(String names).
如下是調用這個方法的例子:
printInvitation("李剛", "David Smith");
printInvitation("Greg Wu", "Paul Nguyen", "Liu Wei", "張新");
printInvitation(); //無參數
當在無參數情況下調用這個方法時,將不執行任何這個方法中的代碼
如下是運行結果:
Recording info: invitation card has been printed for 李剛
Recording info: invitation card has been printed for David Smith
Recording info: invitation card has been printed for Greg Wu
Recording info: invitation card has been printed for Paul Nguyen
Recording info: invitation card has been printed for Liu Wei
Recording info: invitation card has been printed for 張新
參考資料
  • 1.    Stephen Prata.C++ Primer Plus:人民郵電出版社,2012