Linux C 编程中,int main(int argc,char* argv[])解析

来源:互联网 发布:电魂网络怎么样 编辑:程序博客网 时间:2024/06/05 03:49

 

 

    在学习Linux C的编程中,int main(int argc,char* argv[])这个主函数样子应该不少见,那要怎么理解呢?传入字符串后,如果你会使用传入后的字符串中的单个字符,理解其中的原理,那么就不用往下看了

    argc是一个整型,指的是往主函数传入字符串的个数。

    比如:

               编译好test.c这个文件后生成可执行文件test,敲指令   ./test test1 test2 test3 

               这时argc为4,分别为test,test1,est2,test3。

    

argv[]是一个指针数组,即每个数组元素都为一个指针,即每个数组元素都是一个地址变量,每个元素存储的是字符串的地首地址(字符串本身就是它的首地址)。

    所以,用上面的例子,

                          printf("%s\n",argv[0]);        显示:test

                          printf("%s\n",argv[1]);        显示:test1

                          printf("%s\n",argv[2]);        显示:test2

                          printf("%s\n",argv[3]);        显示:test3

                         

    上面说的传入来的字符串的使用,如果我要使用传入来的字符串中的单个字符呢?那么就要先理解字符串的最基本概念了。

     C语言中没有字符串这一种类型,但是它的存储方式是一维数组的方式存储的,所以一个字符串就是一个数组,字符串本身就是这个数组的首地址。

     比如:

                 char a[]="test";

                 printf("%c\n",a[0]);                显示t

              

                 等于

                 printf("%c\n","test"[0]);          显示t

     因为"test"就是字符串test的首地址,相当于a[]中的a.

     所以,要用传入进来的argv[]中的单个字符,按上面的理解,不是一件很简单的事情吗?

     如:

                ./test test1   (这样子输入指令)

                printf("%s\n",argv[1]);             显示:test1

                printf("%c\n",argv[1][0]);           显示:t

                printf("%c\n",argv[1][1]);           显示:e