带参数的main()函数
#include<iostream.h>//ECHO.CPPmain(intargc,char*argv[]){for(inti=0;i<argc;i++)cout<<a...
#include<iostream.h>
//ECHO.CPP
main(int argc,char *argv[])
{
for(int i=0;i<argc;i++)cout<<argv[i]<<'\t';
cout<<'\n';
}
什么意思啊?看不明白哦 展开
//ECHO.CPP
main(int argc,char *argv[])
{
for(int i=0;i<argc;i++)cout<<argv[i]<<'\t';
cout<<'\n';
}
什么意思啊?看不明白哦 展开
3个回答
展开全部
int argc,char *argv
agrc表示参数的个数
argv储存参数
这个函数的意思是逐一输出参数
实际上,main函数也可以带参数。带参数main函数的定义格式如下:
void main(int argc, char *argv[])
{
... ...
}
argc和argv是main函数的形式参数。这两个形式参数的类型是系统规定的。如果main函数要带参数,就是这两个类型的参数;否则main函数就没有参数。变量名称argc和argv是常规的名称,当然也可以换成其他名称。
那么,实际参数是如何传递给main函数的argc和argv的呢?我们知道,C程序在编译和链接后,都生成一个exe文件,执行该exe文件时,可以直接执行;也可以在命令行下带参数执行,命令行执行的形式为:
可执行文件名称 参数1 参数2 ... ... 参数n
可执行文件名称和参数、参数之间均使用空格隔开。例如,我们在DOS下运行copy c:\test.txt d:\test.txt,可执行文件名称为copy,参数1为字符串“c:\test.txt”,参数2为“d:\test.txt”。结果copy命令将c:\test.txt拷贝到d盘,目标文件取为test.txt。
如果按照这种方法执行,命令行字符串将作为实际参数传递给main函数。具体为:
(1) 可执行文件名称和所有参数的个数之和传递给argc;
(2) 可执行文件名称(包括路径名称)作为一个字符串,首地址被赋给argv[0],参数1也作为一个字符串,首地址被赋给argv[1],... ...依次类推。
例如,现在运行命令行(test是编译后的exe文件名称):
C:\TC\test how are you
那么test工程的main函数参数argc=4;
argv[0]将保存字符串"C:\TC\test"的首地址;
argv[1]将保存字符串"how"的首地址;
argv[2]将保存字符串"are"的首地址;
argv[3]将保存字符串"you"的首地址;
下面的例子打印所有的argv参数:
main(int argc, char *argv[])
{
int i;
printf("\nTotal %d arguments",argc);
for(i=0;i<argc;i++)
{
printf("\nArgument %d = %s ",i+1, argv[i]);
}
}
如果编译后的exe文件名称为test,在DOS下运行C:\TC\test how are you,结果输出:
Total 4 arguments
Argument 1 = C:\TC\test.exe
Argument 2 = how
Argument 3 = are
Argument 4 = you
我们也可以在调试状态下输入命令行参数,方法是:
在TurboC的Options菜单下有一个子菜单Arguments,选择该项并确定,弹出输入窗口;在输入窗口键入命令行参数即可。比如要调试上述的test,可以在输入窗口键入how are you。在调试过程中,可执行文件名称和参数字符串将被传递给main函数的形式参数。
在DOS系统下,人们常常希望在运行exe的同时,传递一些有用的信息。例如copy.exe,运行时将源文件名称和目的文件名称作为参数传入。利用指针数组argv作为main函数的形式参数,可以满足这种需要。
agrc表示参数的个数
argv储存参数
这个函数的意思是逐一输出参数
实际上,main函数也可以带参数。带参数main函数的定义格式如下:
void main(int argc, char *argv[])
{
... ...
}
argc和argv是main函数的形式参数。这两个形式参数的类型是系统规定的。如果main函数要带参数,就是这两个类型的参数;否则main函数就没有参数。变量名称argc和argv是常规的名称,当然也可以换成其他名称。
那么,实际参数是如何传递给main函数的argc和argv的呢?我们知道,C程序在编译和链接后,都生成一个exe文件,执行该exe文件时,可以直接执行;也可以在命令行下带参数执行,命令行执行的形式为:
可执行文件名称 参数1 参数2 ... ... 参数n
可执行文件名称和参数、参数之间均使用空格隔开。例如,我们在DOS下运行copy c:\test.txt d:\test.txt,可执行文件名称为copy,参数1为字符串“c:\test.txt”,参数2为“d:\test.txt”。结果copy命令将c:\test.txt拷贝到d盘,目标文件取为test.txt。
如果按照这种方法执行,命令行字符串将作为实际参数传递给main函数。具体为:
(1) 可执行文件名称和所有参数的个数之和传递给argc;
(2) 可执行文件名称(包括路径名称)作为一个字符串,首地址被赋给argv[0],参数1也作为一个字符串,首地址被赋给argv[1],... ...依次类推。
例如,现在运行命令行(test是编译后的exe文件名称):
C:\TC\test how are you
那么test工程的main函数参数argc=4;
argv[0]将保存字符串"C:\TC\test"的首地址;
argv[1]将保存字符串"how"的首地址;
argv[2]将保存字符串"are"的首地址;
argv[3]将保存字符串"you"的首地址;
下面的例子打印所有的argv参数:
main(int argc, char *argv[])
{
int i;
printf("\nTotal %d arguments",argc);
for(i=0;i<argc;i++)
{
printf("\nArgument %d = %s ",i+1, argv[i]);
}
}
如果编译后的exe文件名称为test,在DOS下运行C:\TC\test how are you,结果输出:
Total 4 arguments
Argument 1 = C:\TC\test.exe
Argument 2 = how
Argument 3 = are
Argument 4 = you
我们也可以在调试状态下输入命令行参数,方法是:
在TurboC的Options菜单下有一个子菜单Arguments,选择该项并确定,弹出输入窗口;在输入窗口键入命令行参数即可。比如要调试上述的test,可以在输入窗口键入how are you。在调试过程中,可执行文件名称和参数字符串将被传递给main函数的形式参数。
在DOS系统下,人们常常希望在运行exe的同时,传递一些有用的信息。例如copy.exe,运行时将源文件名称和目的文件名称作为参数传入。利用指针数组argv作为main函数的形式参数,可以满足这种需要。
参考资料: http://www.neu.edu.cn/cxsj/online/c8/ch8_8.html
2018-07-06 · 知道合伙人教育行家
关注
展开全部
main是一个函数,也能带参数。
它的参数有两个,格式 如下:
main(int argc, char *argv[])
第一个是一个int型变量,表示参数的个数。
第二个是一个字符串指针数组,数组中的每一个指针都指向一个字符串,这些字符串就是用户传给程序的参数,这些参数用用空格分开。
这两个变量 的名字没有特别要求,你完全可以把argc改成m等其他可用的名字,但一般是这两个:argc(=args count)和argv(args value)。
最后的运行是这样的,例如./main arg1 arg2 arg3,这种格式类似linux下的命令,如rm file等。
下面给出一段简单的代码 :
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("argc=%d/n", argc);
int i = 0;
for (i=0; i<argc; i++)
{
printf("argv[%d]=%s/n", i, argv[i]);
}
return 0;
}
编译gcc main.c -o main, 运行 ./main xiao she结果如下:
argc=3
argv[0]=./main
argv[1]=xiao
argv[2]=she
./main会被作为用户输入的第一个参数。
对于带参数的main函数的调试 ,我们可以使用gdb ,步骤有3:
(1)编译加-g参数,如gcc -g main.c -o main。
(2)运行gdb,如gdb main,同不带参数的main程序一样。
(3)增加参数,增加参数的方法有两种:a)run main 参数列表 b)set args 参数列表。
它的参数有两个,格式 如下:
main(int argc, char *argv[])
第一个是一个int型变量,表示参数的个数。
第二个是一个字符串指针数组,数组中的每一个指针都指向一个字符串,这些字符串就是用户传给程序的参数,这些参数用用空格分开。
这两个变量 的名字没有特别要求,你完全可以把argc改成m等其他可用的名字,但一般是这两个:argc(=args count)和argv(args value)。
最后的运行是这样的,例如./main arg1 arg2 arg3,这种格式类似linux下的命令,如rm file等。
下面给出一段简单的代码 :
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("argc=%d/n", argc);
int i = 0;
for (i=0; i<argc; i++)
{
printf("argv[%d]=%s/n", i, argv[i]);
}
return 0;
}
编译gcc main.c -o main, 运行 ./main xiao she结果如下:
argc=3
argv[0]=./main
argv[1]=xiao
argv[2]=she
./main会被作为用户输入的第一个参数。
对于带参数的main函数的调试 ,我们可以使用gdb ,步骤有3:
(1)编译加-g参数,如gcc -g main.c -o main。
(2)运行gdb,如gdb main,同不带参数的main程序一样。
(3)增加参数,增加参数的方法有两种:a)run main 参数列表 b)set args 参数列表。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
说简单点就是
int argc;//表示读入字符串个数
char *argv[];//指针数组,用来存放读入的字符串
程序的意思逐个输出所有读入的字符串,每个字符串间空一个制表符间隔
int argc;//表示读入字符串个数
char *argv[];//指针数组,用来存放读入的字符串
程序的意思逐个输出所有读入的字符串,每个字符串间空一个制表符间隔
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询