阅读Array C ++的学生成绩

时间:2014-12-06 20:36:04

标签: c++

这个简单的程序来读取学生的成绩。我想知道用户想要输入多少学生,但是当我写int g[size];时,这将是编译错误!我想知道如何才能正确写出来?

#include <iostream> 
using namespace std;

    int main()
    {
        int x;
        cout << "Enter how many student ..?  ";
        cin >> x;
         const int size = x;
        int g[size];
        cout << "enter " << size << "your ";
        for (int i = 0; i < size; i++){
            cin >> g[i];
        }
        for (int i = 0; i < size; i++){
            cout << "student" << i + 1 << "grade is : " << g[i] << endl;
        }

   system("pause");
    return 0 ;
}

1 个答案:

答案 0 :(得分:1)

int g[size];导致编译错误,因为size在编译时是未知的(但显然在运行时)。 所以你需要在运行时为数组分配内存。

int *g = new int[size]; // instead of int g[size];

这以g为单位存储指向数组第一个元素的指针。现在,编译器无法再跟踪数组的生命周期并在不再需要时将其删除,因此您也需要自己执行此操作。

delete[] g; // this frees the memory again
system("pause");

作为旁注:您的程序是有效的C ++ 14,它还没有(完全)支持Microsoft的Visual C ++编译器,但其他编译器如clang和g ++已经支持它。