Эта простая программа для чтения класса студентов. Я хочу принять, сколько учеников пользователь хочет ввести, но когда я пишу 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 ;
}
Строка 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++, уже поддерживают его.