为什么int main(int argc, char* argv[])中的argc默认为一且不能改变,代码如上

为什么int main(int argc, char* argv[])中的argc默认为一且不能改变,代码如下
#include <iostream>
#include <fstream>
#include <cstdlib>

using namespace std;

void error(const char* str1,const char* str2="")
{
  cerr<<str1<<' '<<str2<<'\n';
  exit(1);
}
int main(int argc, char* argv[])
{
  if(argc != 3)
  {
  error("参数个数不正确");
  }
  ifstream from(argv[1]);
  if(!from)
  error("不能打开文件",argv[1]);
  ofstream to(argv[2],ios::app);
  if(!to)
  error("不能打开文件",argv[2]);
  char ch;
  while(from.get(ch))
  to.put(ch);
  if(!from.eof() || !to)
  error("发生其他的错误");

  cout << "Hello world!" << endl;
  return 0;
}
运行结果:
参数个数不正确
Process returned 1 (0x1) execution time : 0.393 s
press any key to continue

------解决方案--------------------
第一个参数是可执行程序的文件名,有些编译器可能还包括路径,你文件名能改?
------解决方案--------------------
你不从命令行输入参数的话,它只会包含自己,只有一个参数,所以你得从命令行输入你的参数才会有多个。
------解决方案--------------------
函数从命令行添加数据,必须得输入
------解决方案--------------------
./a.out argu1 argu2

命令行参数,google一下
------解决方案--------------------
这两个参数是在程序启动时由系统传入的,假如你生成的exe的目录在C:\text.exe,那么你必须在控制台下这么写:
cmd C:\text.exe arg1 arg2 [...]
调试的话在工程属性里边设置调试命令行