Вот ваш комбинированный ответ на все остальные:
Ваш код сейчас , а не стандарт C ++. Это это стандарт C99. Это связано с тем, что C99 позволяет динамически объявлять массивы таким образом. Чтобы уточнить, это также стандарт C99:
#include <stdio.h>
int main()
{
int x = 0;
scanf("%d", &x);
char pz[x];
}
Это не стандартное что-либо:
#include <iostream>
int main()
{
int x = 0;
std::cin >> x;
char pz[x];
}
Это не может быть стандартным C ++, потому что для этого требуются постоянные размеры массива, и он не может быть стандартным C, потому что C не имеет std::cin
(или пространств имен, или классов и т. Д.)
Чтобы сделать его стандартным C ++, сделайте следующее:
int main()
{
const int x = 12; // x is 12 now and forever...
char pz[x]; // ...therefore it can be used here
}
Если вам нужен динамический массив, вы можете сделать это:
#include <iostream>
int main()
{
int x = 0;
std::cin >> x;
char *pz = new char[x];
delete [] pz;
}
Но вы должны сделать это:
#include <iostream>
#include <vector>
int main()
{
int x = 0;
std::cin >> x;
std::vector<char> pz(x);
}