C语言中的命令行参数声明为int main(int argc, char *argv[]),或 main(int argc, char **argv),argc代表参数个数,argv为存储各个参数的字符字符指针数组。
argv中有argc个元素,每一个元素为一字符指针,指向一个参数字符串。具体细节理解下例可知。
commandLine.c
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char *argv[]){
int i = 0;
char **argv1 = argv;
printf("After the declatation: char **argv11 = argv/n");
printf("The detail information of the command line arguments are:/n/n");
printf("add(argc) = %#x, argc = %d/n",&argc, argc);
printf("&argv = %#x/n", &argv);
printf("argv = %#x/n", argv);
printf("*argv = %#x/n", *argv);
printf("/n");
while(i < argc){
printf("&argv[%d] = %#x/n", i, &argv[i]);
printf("argv[%d](%%#x) = %#x/n", i, argv[i]);
printf("&argv[%d][0] = %#x/n", i, &argv[i][0]);
printf("argv[%d](%%s) = %s/n", i, argv[i]);
printf("argv1 = %#x/n", argv1);
printf("*argv1(%%#x) = %#x/n", *argv1);
printf("*argv1(%%s) = %s/n", *argv1);
printf("++argv1/n");
++argv1;
printf("/n");
i++;
}
exit(0);
}
Run Environment:gcc-4.1.2 on linux 2.6.23.1
Command:
[---@---]$gcc comLineArgs.c -o echo
[---@---]$./echo Hello world
Result:
After the declatation: char **argv11 = argvThe detail information of the command line arguments are:
add(argc) = 0xbfbe6b50, argc = 3
&argv = 0xbfbe6b54
argv = 0xbfbe6bd4
*argv = 0xbfbe7947
&argv[0] = 0xbfbe6bd4
argv[0](%#x) = 0xbfbe7947
&argv[0][0] = 0xbfbe7947
argv[0](%s) = ./echo
argv1 = 0xbfbe6bd4
*argv1(%#x) = 0xbfbe7947
*argv1(%s) = ./echo
++argv1
&argv[1] = 0xbfbe6bd8
argv[1](%#x) = 0xbfbe794e
&argv[1][0] = 0xbfbe794e
argv[1](%s) = Hello
argv1 = 0xbfbe6bd8
*argv1(%#x) = 0xbfbe794e
*argv1(%s) = Hello
++argv1
&argv[2] = 0xbfbe6bdc
argv[2](%#x) = 0xbfbe7954
&argv[2][0] = 0xbfbe7954
argv[2](%s) = world
argv1 = 0xbfbe6bdc
*argv1(%#x) = 0xbfbe7954
*argv1(%s) = world
++argv1