我想用C++结构体定义数组,输入信息

这个地方报错一直,要求输入常量,但我想输入变量,大家能帮忙看看还能怎么改。

img

如果我的答案对你有帮助,请点赞并接纳我的答案,谢谢
当你在 C++ 中使用结构体定义数组时,结构体中的成员通常应该是常量,因为数组的大小在编译时期需要确定。但如果你希望输入变量来确定结构体数组的大小,可以使用动态内存分配和指针。

以下是一个简单的示例,展示了如何使用结构体定义数组,并通过输入变量来确定数组的大小:

#include <iostream>
using namespace std;

// 定义结构体
struct Student {
    string name;
    int age;
};

int main() {
    int n; // 变量,用于确定数组大小
    cout << "请输入学生人数:";
    cin >> n; // 输入学生人数

    // 动态分配内存以创建结构体数组
    Student* students = new Student[n];

    // 输入学生信息
    for (int i = 0; i < n; i++) {
        cout << "请输入第 " << i + 1 << " 个学生的姓名:";
        cin >> students[i].name;
        cout << "请输入第 " << i + 1 << " 个学生的年龄:";
        cin >> students[i].age;
    }

    // 输出学生信息
    cout << "学生信息如下:" << endl;
    for (int i = 0; i < n; i++) {
        cout << "姓名:" << students[i].name << ",年龄:" << students[i].age << endl;
    }
    // 释放动态分配的内存
    delete[] students;

    return 0;
}

在上面的示例中,我们使用了 new 运算符来动态分配内存以创建结构体数组 students,其中数组的大小由变量 n 决定。然后通过循环输入学生的信息,最后释放动态分配的内存以避免内存泄漏。

需要注意的是,在使用动态内存分配时,需要负责手动释放分配的内存,以避免内存泄漏。

以下内容部分参考ChatGPT模型:


可以使用动态内存分配来解决这个问题。具体实现如下:

#include <iostream>

using namespace std;

struct Student {
    string name;
    int age;
    string gender;
};

int main() {
    int n;
    cout << "请输入学生人数:";
    cin >> n;

    Student* students = new Student[n];  // 动态分配内存

    for (int i = 0; i < n; i++) {
        cout << "请输入第" << i+1 << "个学生的信息:\n";
        cout << "姓名:";
        cin >> students[i].name;
        cout << "年龄:";
        cin >> students[i].age;
        cout << "性别:";
        cin >> students[i].gender;
    }

    cout << "学生信息如下:" << endl;
    for (int i = 0; i < n; i++) {
        cout << "姓名:" << students[i].name << endl;
        cout << "年龄:" << students[i].age << endl;
        cout << "性别:" << students[i].gender << endl;
    }

    delete[] students;  // 释放内存

    return 0;
}

在这个代码中,我们使用了 new 关键字来动态分配内存,即根据用户输入的学生人数 n 来分配相应大小的内存空间。然后,我们可以通过 students[i] 来访问第 i 个学生的信息。最后,我们需要使用 delete[] 关键字来释放动态分配的内存。


如果我的建议对您有帮助、请点击采纳、祝您生活愉快

将struct去掉

#include <iostream>

using namespace std;

struct Type
{
    int a;
    int b;
};

int main()
{
    int n;
    cin>>n;


    Type type1[n];

    return 0;
}

img


就是这个还有问题