Это потому, что вы не печатаете аргументы как строки, вы печатаете их ячейки памяти . В clang ++ - 9 (что я тестировал) это происходит, когда указатель передается в std :: cout, во многих компиляторах (MSV C, поправьте меня, если я не прав), это просто ничего не печатает.
Вам нужно сослаться на него как на индекс массива и напечатать, что
int main(int argc, char **argv) {
cout << argv[0] << endl;
cout << argv[1] << endl;
cout << argv[2] << endl;
return 0;
}
Приведенный выше код прекрасно работает для меня (передача аргументов вручную при выполнении) при компиляции с помощью clang ++ - 9 , Если вы собираетесь использовать этот код, вы также должны проверить, что есть как минимум 3 аргумента (значение argc
), в противном случае вы можете указать на недопустимую память при индексации argv
Также попробуйте избежать std :: endl и вместо этого используйте "\ n", std :: endl без необходимости очищает буфер и не требуется в 99% случаев