C/C++ 给main()传递参数

C/C++ 给main()传递参数

我把C和C++的源代码都会写下,但各位要点赞!

Dev-C++也可以写C

先不急,这不是个方法,这是个知识点。
在我掌握这个知识点前,我与大家一样,main这么写:
C

int main(void) {
 return 0;
}

C++

using namespace std;
int main(void) {
 return 0;
}

是吧?(void表示没有参数)
上面的main没有参数。
main参数的第一种写法。
第二种,就是我们今天要讲的,他有一个特定的名称:命令行参数。
有了命令行参数,代码怎么写?
C

int main(int argc,char *argv[]) {
 return 0;
}

C++

using namespace std;
int main(int argc,char *argv[]) {
 //写C++的听清楚了!这里argv[]必须要用C风格字符串,不能用C++ STL string类。
 return 0;
}

当然,这是一般的写法,参数名称你改啥都行。
argv是一个字符串数组,argc表示argv字符串的长度(argv有多少个字符串)。
写C++的:千万不能用string argv[]。
第一个环节结束:认识命令行参数。
第二个环节:知道命令行参数传递方法,和一些命令行参数的常识。
如果你使用Bloodshed-Dev-C++……
写C++的:把注释的那行删了。
把程序改成以下:
C

#include 
int main(int argc,char *argv[]) {
 auto int i = 0;
 while (i < argc)
  puts(argv[i ++]);
 return 0;
}

C++

#include 
using namespace std;
int main(int argc,char *argv[]) {
 for (int i = 0;i < argc;i ++)
  cout << argv[i] << endl;
 return 0;
}

写C的:“auto”不懂?不写一样。
写C的:我这Dev-C++版本里的C不支持for循环。
输出什么?不要嫌麻烦,耐心看,是“文件路径\文件名”。
就是文件位置。
这代码的意思就是输出命令行参数。
那怎么输出路径了?
argv[0]永远是路径。
也就是说,argc永远≥1。
argv[1]以后,就是你传入的参数。
argv[0]你可以认为是系统传入的……
argc是智能的,不需要你输入,会自动算好。
现在,“运行[R]”->“参数[w]…”->“传递给主程序的参数”。
输入“HelloWorld”。
再运行代码。
输出一行路径、一行“HelloWorld”。
如果你懂了,恭喜你。
不懂?我也不说你别看,先看懂了。
看懂的在两个单词中间加个空格(“Hello World”)。
运行。
输出一行参数、一行“Hello”、一行“World”。
查看argc的值:3。
你传入的是两个参数。
参数之间用空格隔开。
没用Dev-Cpp的,也听听参数传递方式、argv[0]、argc、argv[1到(argc - 1)],这是C++的知识点,不只是Dev-Cpp的知识点。
用Dev-Cpp的:注意运行完一个后,把参数清空。
告辞之前,留个小作业:

请写出以下程序的运行结果。

C

//参数:1 222 wew 4
#include 
int main(int argc,char *argv[]) {
 printf("%dd\n",argc);
 auto int i = 1;
 while (i < argc) {
  printf("%s\n",argv[i]);
  i += 2;
 }
 return 0;
}

C++

//参数:1 222 wew 4
#include 
using namespace std;
int main(int argc,char *argv[]) {
 printf("%dd\n",argc);
 for (int i = 1;i < argc;i += 2)
  printf("%s\n",argv[i]);
 return 0;
}

望点赞

结果:

5d
1
wew

你可能感兴趣的:(C++,C,命令行参数)