我碰到這個代碼波紋管今天,我不能完全肯定它會做:C++指向本地字符串字面
pLogFileCriteria->taskToLogFor[0][0] = *"*";
它的值設置爲一個指向本地字符串這是在堆棧上?所以當它退出這個功能時,這個內存是否仍然存在?似乎魚給我。
我碰到這個代碼波紋管今天,我不能完全肯定它會做:C++指向本地字符串字面
pLogFileCriteria->taskToLogFor[0][0] = *"*";
它的值設置爲一個指向本地字符串這是在堆棧上?所以當它退出這個功能時,這個內存是否仍然存在?似乎魚給我。
*"*"
的類型是const char
。您的代碼片段將爲由左側計算的位置分配一個char
值。
這將做同樣的事情:
pLogFileCriteria->taskToLogFor[0][0] = '*';
字符串文字具有靜態持續時間。它們存在於程序的整個生命週期中,因此獲得指向它的第一個字符的指針將在該函數之後保持有效。但請注意間接運營商。它會導致指向第一個字符的指針被解除引用,產生該字符。
所以真的只是一個字符設置爲「*」作爲詹姆斯在他的評論說。 –
你可能是對的。看起來寫這些代碼的人想讓它儘可能複雜。 –
@TyrelVanNiekerk如果這就是他們的目標,他們並不會非常努力。它可能要複雜得多。 – Barmar