如何在C ++中创建动态结构数组?

时间:2014-09-21 18:57:59

标签: c++ arrays dynamic struct

我试图用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

}

我在动态数组中很困惑。请帮我。感谢。

2 个答案:

答案 0 :(得分:1)

分配int和分配struct之间的语法没有区别。

您的语法是正确的。你只需要两次定义record指针。删除第一个定义并完成所有设置(哦,struct{}声明后缺少分号)。

请注意,现代C ++可能更喜欢使用现有的STL容器(vector<Phone>或类似容器),而不是手动调用newdelete[]。我认为这是为了学习,而不是用于生产代码。

答案 1 :(得分:0)

我还建议使用std :: vector。它会为你节省很多问题和内存错误。只是做:

struct structName 
{
     ...
}

std::vector<structName> structVector;

然后将值放到矢量上做

 structVector.push_back(structName{});