这是一个非常愚蠢的问题,但我真的没有在其他任何地方找到答案。 我只是想分配内存来存储指针。这应该是最容易的。 但令人讨厌的是它不起作用(在Windows上的VS2010中)......
int _tmain(int argc, _TCHAR* argv[])
{
int* ints;
int** intptrs;
// Want to allocate space for single pointer
ints = new int[10]; // Works
// Want to allocate space for a integer pointer
intptrs = new (int*); // Works
// Want to allocate space for 10 integer pointers
intptrs = new (int*)[10]; // error C2143: syntax error : missing ';' before '['
}
答案 0 :(得分:4)
gcc的编译错误:
$ g++ test.cc
test.cc: In function 'int main()':
test.cc:3:23: error: array bound forbidden after parenthesized type-id
test.cc:3:23: note: try removing the parentheses around the type-id
因此,您只需要删除括号以删除错误:
intptrs = new int*[10];
在使用C ++时,我建议使用std::vector
而不是原始数组:
#include <vector>
int main() {
// create 10 pointers to int
std::vector<int*> intptrs(10);
}
(注意,当向量被销毁时,指向的对象不会被删除。你需要在需要时手动执行此操作。或者使用智能指针而不是原始指针,例如std::shared_ptr
。)
供参考:
答案 1 :(得分:0)
intptrrs是指向指针的指针。所以这应该有用
*intptrs = new int[10];