我试图用C ++学习动态数组。对于整数,动态数组是这样的:
int main()
{
int x;
cin >> x;
int *dynamic = new int[x];
//some codes
delete [] dynamic;
return 0;
}
如何创建动态struct数组?我尝试了这段代码而且失败了。
struct Phone{
char name[30];
char number[20];
}
int main(){
int x;
cin >> x;
Phone *record;
Phone *record = new Phone[x];// Code fails here
}
我在动态数组中很困惑。请帮我。感谢。
答案 0 :(得分:1)
分配int
和分配struct
之间的语法没有区别。
您的语法是正确的。你只需要两次定义record
指针。删除第一个定义并完成所有设置(哦,struct{}
声明后缺少分号)。
请注意,现代C ++可能更喜欢使用现有的STL容器(vector<Phone>
或类似容器),而不是手动调用new
和delete[]
。我认为这是为了学习,而不是用于生产代码。
答案 1 :(得分:0)
我还建议使用std :: vector。它会为你节省很多问题和内存错误。只是做:
struct structName
{
...
}
std::vector<structName> structVector;
然后将值放到矢量上做
structVector.push_back(structName{});