2016-05-26 24 views
1

我在看一些C++代碼,如下所示:這是什麼指針增值業務實現這裏

char* foo = strchr(sStr, '\t'); 
if (foo) 
{ 
    *foo++ = '\0'; 
    /* more code */ 
} 

我猜想是不是需要更多的背景 - 我知道,第一行是初始化一個指向sStr中第一個出現的指針。雖然我不完全確定*foo++ = '\0';在做什麼。

回答

5

這條線:

*foo++ = '\0'; 

設置一個foo點的值'\0'(空字符),並且隨後移動指針,以便它指向下一個字符的字符。它相當於:

*foo = '\0'; 
foo = foo + 1; 
2

這是「訪問數組元素並前進到下一個元素」的標準咒語。它直接類似於像foo[i++]這樣的迭代遍歷數組。

表達本身解析作爲

*(foo++) = '\0'; 

foo++手段「增量FOO,但在這個表達式中使用它的電流值」。因此,該表達式將'\0'分配給char對象,foo當前指向並前進foo指向下一個元素。

0

以前的答案是正確的:foo指向一個選項卡sStr,太行*foo++ = '\0';替換選項卡以NUL和墊款foo指向下一個字符。

您可能會這樣做的原因是將一行文本解析爲製表符分隔的字段。如果/* more code */沒有這樣做(,記錄指向字段開始的指針,並通過用NUL替換標籤來分隔它們),我會感到驚訝。