我碰到这个代码波纹管今天,我不能完全肯定它会做:C++指向本地字符串字面
pLogFileCriteria->taskToLogFor[0][0] = *"*";
它的值设置为一个指向本地字符串这是在堆栈上?所以当它退出这个功能时,这个内存是否仍然存在?似乎鱼给我。
我碰到这个代码波纹管今天,我不能完全肯定它会做:C++指向本地字符串字面
pLogFileCriteria->taskToLogFor[0][0] = *"*";
它的值设置为一个指向本地字符串这是在堆栈上?所以当它退出这个功能时,这个内存是否仍然存在?似乎鱼给我。
*"*"
的类型是const char
。您的代码片段将为由左侧计算的位置分配一个char
值。
这将做同样的事情:
pLogFileCriteria->taskToLogFor[0][0] = '*';
字符串文字具有静态持续时间。它们存在于程序的整个生命周期中,因此获得指向它的第一个字符的指针将在该函数之后保持有效。但请注意间接运营商。它会导致指向第一个字符的指针被解除引用,产生该字符。
所以真的只是一个字符设置为“*”作为詹姆斯在他的评论说。 –
你可能是对的。看起来写这些代码的人想让它尽可能复杂。 –
@TyrelVanNiekerk如果这就是他们的目标,他们并不会非常努力。它可能要复杂得多。 – Barmar