2017-08-25 72 views
2

我碰到這個代碼波紋管今天,我不能完全肯定它會做:C++指向本地字符串字面

pLogFileCriteria->taskToLogFor[0][0] = *"*"; 

它的值設置爲一個指向本地字符串這是在堆棧上?所以當它退出這個功能時,這個內存是否仍然存在?似乎魚給我。

回答

4

*"*"的類型是const char。您的代碼片段將爲由左側計算的位置分配一個char值。

這將做同樣的事情:

pLogFileCriteria->taskToLogFor[0][0] = '*'; 
+0

你可能是對的。看起來寫這些代碼的人想讓它儘可能複雜。 –

+0

@TyrelVanNiekerk如果這就是他們的目標,他們並不會非常努力。它可能要複雜得多。 – Barmar

1

字符串文字具有靜態持續時間。它們存在於程序的整個生命週期中,因此獲得指向它的第一個字符的指針將在該函數之後保持有效。但請注意間接運營商。它會導致指向第一個字符的指針被解除引用,產生該字符。

+0

所以真的只是一個字符設置爲「*」作爲詹姆斯在他的評論說。 –