2017-08-25 58 views
2

我碰到这个代码波纹管今天,我不能完全肯定它会做:C++指向本地字符串字面

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

它的值设置为一个指向本地字符串这是在堆栈上?所以当它退出这个功能时,这个内存是否仍然存在?似乎鱼给我。

回答

4

*"*"的类型是const char。您的代码片段将为由左侧计算的位置分配一个char值。

这将做同样的事情:

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

你可能是对的。看起来写这些代码的人想让它尽可能复杂。 –

+0

@TyrelVanNiekerk如果这就是他们的目标,他们并不会非常努力。它可能要复杂得多。 – Barmar

1

字符串文字具有静态持续时间。它们存在于程序的整个生命周期中,因此获得指向它的第一个字符的指针将在该函数之后保持有效。但请注意间接运营商。它会导致指向第一个字符的指针被解除引用,产生该字符。

+0

所以真的只是一个字符设置为“*”作为詹姆斯在他的评论说。 –