这个简单的程序来读取学生的成绩。我想知道用户想要输入多少学生,但是当我写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 ;
}
答案 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 ++已经支持它。