1、int main(int argc,char *argv)与int main(int argc,char **argv)区别?
int main(int argc,char *argv)
argc: 整数,用来统计你运行程序时送给的命令行参数的个数
* argv: 字符串,用来存放指向你的字符串参数的,每一个元素指向一个参数
argv[0] 指向程序运行的全路径名
argv[1] 指向在DOS命令行中执行程序名后的第一个字符串
argv[2] 指向执行程序名后的第二个字符串
int main(int argc,char **argv) 相当于 int main(int argc,char *argv[ ] )
argc: 整数,用来统计你运行程序时送给的命令行参数的个数
* argv: 字符串,用来存放指向你的字符串参数的,每一个元素指向一个参数
argv[1] 指向在DOS命令行中执行程序名后的第一个字符串的指针
argv[2] 指向执行程序名后的第二个字符串的指针
在int main(int argc,char **argv)中 argv[1]是一个指针,存的内容是一个地址,而在int main(int argc,char
*argv)中argv[1]是一个数组元素(个人理解)
2、我看到这样的一个程序,如下:
int main(int argc, char **argv)
{
int on;
int led_no;
int fd;
if(argc != 3 ||sscanf(argv[1],"%d",&led_no) !=1 ||
sscanf(argv[2],"%d",&on) !=1 ||
on < 0 || on > 1 || led_no <0 || led_no>3)
{
fprintf(stderr,"Usage:Leds led_no 0|1\n");
exit(1);
}
其中sscanf(argv[1],"%d",&led_no) !=1不是很明白!我的理解是这样的:
argv[1]中存的是一个地址,把这个地址通过sscanf函数传递给&led_on,所以led_on就是argv[1]地址中的内容!不知道我理解的对不对!希望看到这篇文章的高手,给指点一下!
比如我输入 ./led 1 0 那么argv[1]就是指向1的指针,利用sscanf 把1的地址传给你&led_on 从而得出 led_on为1
我理解对吗?
sscanf(argv[1],"%d",&led_no)最后的&地址符号怎么理解?
1、argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数 命令行后面跟的用户输入的参数,比如:
int main(int argc, char* argv[])
{
int i;
for (i = 0; i<argc; i++)
cout<<argv[i]<<endl;
cin>>i;
return 0;
}
2、 执行时敲入
F:\MYDOCU~1\TEMPCODE\D1\DEBUG\D1.EXE aaaa bbb ccc ddd
输出如下:
F:\MYDOCU~1\TEMPCODE\D1\DEBUG\D1.EXE
aaaa
bbb
ccc
ddd
3、char *argv[]是一个字符数组,其大小是int argc,主要用于命令行参数 argv[] 参数,数组里每个元素代表一个参数;比如你输入 :
test
a.c b.c t.c
则
argc = 4
argv[0] = "test"
argv[1] = "a.c"
argv[2] = "b.c"
argv[3] = "t.c"
4、argc记录了用户在运行程序的命令行中输入的参数的个数。
arg[]指向的数组中至少有一个字符指针,即arg[0].他通常指向程序中的可执行文件的文件名。在有些版本的编译器中还包括程序文件所在的路径。
5、在调用一个可执行程序时,某些情况下需要向程序传递参数。如我们可以在控制台中键入notepad.exe,
回车后将执行记事本程序。如果我们希望在打开notepad时同时打开一个文本文件,可以在notepad.exe
后面跟上文件的路径和名字,如notepad.exe example.txt(文件在当前路径)。
扩展资料
main函数的参数列表保存了输入参数的信息,第一个参数argc记录了输入参数的个数, 第二个参数是字符串数组的,字符串数组的每个单元是char*类型的,指向一个c风格字符串。
以notepad.exe example.txt为例 argc是2,就是说argv数组中有两个有效单元
第一单元指向的字符串是"notepad.exe" ; 第二单元指向的字符串是"example.txt"
argv数组中的第一个单元指向的字符串总是可执行程序的名字,以后的单元指向的字符串依次是程序调用时的参数。
这个赋值过程是编译器完成的,我们只需要读出数据就可以了。
参考资料
main 前面的 int 则说明main函数返回值是整形,一般是正常退出返回0,异常则是-1.
参数 argc 则是表示 argv 的个数.
argv 则是命令行参数. 这个参数是通过命令提示符窗(Linux 称为终端)口运行程序,以空格区分参数格式带入的。例如编译java文件时:
javac Test.java (这里的 javac 就是程序,argc = 1, argv[0] = "Test.java")