2010-02-01 140 views
11

任何人都可以告訴我什麼是C++循環中的哨兵?請給我一個例子,在while循環中使用sentinel。C + +的哨兵while循環

+3

哨兵已經出現在'int main(int argc,char ** argv)'中:傳遞給你程序的最後一個參數後面跟着一個空指針。所以嚴格來說你不需要'argc':只要循環'argv'直到你得到一個空指針。 – 2010-02-01 13:07:26

回答

23

A 「前哨」 是用來表示一個序列的末端的特殊值。字符串末尾最常見的哨兵是\ 0。 「哨兵同時循環」通常具有以下形式:

while (Get(input) != Sentinel) { 
    Process(input); 
} 
+0

是一個「哨兵while循環」只是一個「while循環」的長名稱呢?還是更具體? – 2017-09-29 16:31:40

+0

@LupusOssorum:更具體。這是一個「而哨兵還沒有看到」 - 迴環。 – MSalters 2017-10-02 06:43:46

0

它通常是一個布爾型(true或false)變量,當條件不滿足時設置爲false,當它設置爲true時設置爲true。然後,只要前哨點是假的,我們就可以循環。

實施例:在該上下文中

bool acceptedAnswer = false; 
while (acceptedAnswer == false) 
{ 
    refreshPage(); 
    if (hasBeenAccepted()) 
    { 
    acceptedAnswer = true; 
    } 
} 
+0

這是不正確的。這只是一種終止條件,或者是一種「警衛」。正如其他人所說的,在一次迭代中,定點標誌是一個特殊的值,表示結束循環。 – 2010-02-01 13:54:07

1

作爲附錄JRL的答案..

請注意,這沒有什麼錯問這個問題了,不過在未來,你可以通過去dictionary.com和查單詞你不覺得更直接的幫助不知道。

編輯:在這種情況下,詞典沒有留下任何東西讓你思考。這裏是定義3 :)

3 Also called tag. Computers. a symbol, mark, or other labeling device indicating the beginning or end of a unit of information. 
+0

是的,但字典沒有提供一個例子。其他人也可能需要一個例子來更好地理解。 – olibre 2016-07-26 21:40:42

0

一個sentinal是項目列表中的一個特殊值,它總是會導致迭代器停止。

例如,ASCIIZ字符串中的零終止符充當sentinal。

鏈接列表通常有NULL指針等等。