当我尝试运行以下
时// Example program
#include <iostream>
#include <string>
int* x;
int main()
{
x = (int[5]) { 16, 2, 77, 40, 12071 };
std::cout << x;
}
我收到以下消息error: taking address of temporary array
这是什么意思?
答案 0 :(得分:6)
(int[5]) { 16, 2, 77, 40, 12071 }
是匿名临时。一旦完成任务,它就会超出范围。
这会留下一个悬空指针。 x
在全局命名空间中没有区别。
改用std::vector
;利用初始化列表构建。