Вы не можете назначить char* pointer to an
int variable, unless you type-cast it, which is not what you need in this situation. You need to parse the
char *string using a function that interprets the *content* of the string and returns a translated integer, such as [
std :: atoi () ](https://en.cppreference.com/w/cpp/string/byte/atoi), [
std :: stoi () `] (https://en.cppreference.com/w/cpp/string/basic_string/stol), и т. Д.
Кроме того, вы не инициализируете n
, если пользователь запускает ваше приложение без ввода параметра командной строки, а первый введенный пользователем параметр сохраняется в argv[1]
, argv[0]
содержит путь / имя файла вызывающего приложениявместо этого.
Кроме того, вам нужно использовать delete[]
вместо delete
. Правило большого пальца - используйте new
и delete
вместе, а new[]
и delete[]
вместе. Или предпочитаетевообще не используйте их напрямую (используйте std::vector
, std::make_unique<T[]>()
и т. д. вместо этого).
Попробуйте что-то более похожее на это:
#include <iostream>
#include <vector>
#include <cstdlib>
using namespace std;
int main(int argc,char** argv){
int n = 0; // <-- initialize your variables!
if (argc > 1)
n = atoi(argv[1]); // <-- [1] instead of [0]! and parse the string...
int* stuff = new int[n];
vector<int> v(100000);
delete[] stuff; // <-- use delete[] instead of delete!
return 0;
}