C语言中的命令行参数声明细节及使用示例

来源:互联网 发布:网络大电影发行公司 编辑:程序博客网 时间:2024/05/10 14:48





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 = argv
The 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
原创粉丝点击