main函数的参数(一)

        (以下代码全都在linux gcc上运行)

       在C语言编程中,函数非常常见。main()也是一种函数,而且C程序总是从main函数开始执行。为什么呢?

       来看《UNIX环境高级编程》中的一段话:

       内核执行C程序时,在调用main前先调用一个特殊的启动例程。可执行程序文件将此启动例程指定为程序的起始地址—这是由连接编辑器设置的,而连接编辑器则由C编译器调用。

      看不懂的话,首先记住main()是程序执行的入口就行了。

      许多函数都是有返回值,有参数的。比如:

       int func(int a);

      那么,main函数有没有参数呢,许多时候我们都是把它当做无参数函数来使用的。

     

#include<stdio.h>
int main()
{
        printf("Hello World!");
        return 0;
}


       这是我们大多数人入手的第一个函数,这样子写是完全可以的,没有错误,可以运行。

       但是,其实main()函数更其它函数一样也都是有爹有妈(参数)的。因为它也是一个函数啊!

       main函数的原型是:

       int main(int argc,char *argv[])或者int main(int argc,char**argv)

      其中,argc是命令行参数的个数,argv是指向参数的各个指针所构成的数组。一言以避之,就是argc表示参数的个数包括执行文件名;而argv来存放参数。这样有可能不直观,让我们来看一段代码:

       

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
   
int main(int argc,char* argv[])
{ 
       int i=0;
       for(i=0;i<argc;i++)
       {   
            printf("argv[%d]: %s\n",i,argv[i]);
       }   
         
       exit(0);
 }                  


         输入:./hello

         输出:argv[0]: ./hello

         这就说明当在命令行只输入:./hello这一个参数时,argc为1。并且./hello存储在argv[0]中,这里就可以看出argv就相当于一个二维数组。

         当在命令行多输入几个参数时:

         输入:./hello hello1 hello2 hello3

         输出:

         argv[0]: ./hello

         argv[1]: hello1

         argv[2]: hello2

         argv[3]: hello3

         现在应该就明了了,但这只是一个初步的了解,关于它还会有更深入的应用。后面在代码中遇到再看吧。

         

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

posted @ 2015-08-21 19:03  普雅花郎  阅读(298)  评论(0编辑  收藏  举报