精华内容
下载资源
问答
  • python中的main函数

    万次阅读 多人点赞 2019-04-16 14:31:40
    python是一种解释型脚本语言,和C/C++语言不同,C/C++程序从main函数开始执行,python程序从开始到结尾顺序执行。先总结下python中的main函数的作用:让模块(函数)可以自己单独执行(调试),相当于构造了调用其它...

     python是一种解释型脚本语言,和C/C++语言不同,C/C++程序从main函数开始执行,python程序从开始到结尾顺序执行。先总结下python中的main函数的作用:让模块(函数)可以自己单独执行(调试),相当于构造了调用其它函数的入口,这就类似于C/C++里面的main函数了。

    一方面:我们想要自己单独执行(调试)

    这里我们实际调试一下(假设这个文件是test.py):

    #test.py
    print('Hello World!')
    
    def aaa():
        print('this message is from aaa  function')
    
    def main():
        print('this message is from main function')
    
    if __name__ == '__main__':
        main()
        print ('now __name__ is %s' %__name__)

    执行python test.py  输出:

    Hello World!
    this message is from main function
    now __name__ is __main__

    这里我们看到我们定义的aaa函数没有被执行,而main函数里面的内容被执行了,表明 if __name__ == '__main__': 这条判断语句是通过的,执行了判断条件里的main(); 

    另一方面:通过import命令就可以使用其它.py文件里面的函数,我们将test.py中的模块(函数)导入call.py,需注意test.py和call.py放在同一个文件夹下;

    #call.py
    from test import aaa
    aaa()
    print ('now __name__ is %s' %__name__)

    执行python  call.py  输出:

    Hello World!
    this message is from aaa  function
    now __name__ is __main__
    

    所以当我们自己写了.py文件,想要测试里面的函数时,就这样构造一个main函数入口就可以调用测试自己写的函数啦~


    补充:test2.py

    print('Hello World!')
    def aaa():
        print('this message is from aaa  function')
    def main():
        print('this message is from main function')
    main()
    aaa()
    

    输出:

    Hello World!
    this message is from main function
    this message is from aaa  function

    实际上这样也可以直接调试,test2.py同样可以直接被其它模块调用,所以python里面mian的设置有些鸡肋?

    展开全文
  • 深度剖析c语言main函数---main函数的返回值

    万次阅读 多人点赞 2018-07-09 23:19:06
    在接下来的几篇博文中,我将对c语言的main函数进行深入的剖析,分别从函数返回值,函数参数,以及函数的执行顺序对main函数作一总结。本文主要聊聊main函数的返回值。 main函数的返回值  main函数的返回值用于...

      在接下来的几篇博文中,我将对c语言的main函数进行深入的剖析,分别从函数返回值,函数参数,以及函数的执行顺序对main函数作一总结。本文主要聊聊main函数的返回值。

    main函数的返回值

      main函数的返回值用于说明程序的退出状态。如果返回0,则代表程序正常退出。返回其它数字的含义则由系统决定。通常,返回非零代表程序异常退出。

    void main()

      有一些书上的,都使用了void main( ) ,其实这是错误的。C/C++ 中从来没有定义过void main( ) 。C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地写着 “The definition void main( ) { /* … */ } is not and never has been C++, nor has it even been C.”
      这可能是因为 在 C 和 C++ 中,不接收任何参数也不返回任何信息的函数原型为“void foo(void);”。可能正是因为这个,所以很多人都误认为如果不需要程序返回值时可以把main函数定义成void main(void) 。然而这是错误的!main 函数的返回值应该定义为 int 类型,C 和 C++ 标准中都是这样规定的。虽然在一些编译器中,void main() 可以通过编译,但并非所有编译器都支持 void main() ,因为标准中从来没有定义过 void main 。g++3.2 中如果 main 函数的返回值不是 int 类型,就根本通不过编译。而 gcc3.2 则会发出警告。所以,为了程序拥有很好的可移植性,一定要用 int main ()。
      测试如下:
      

    #include <stdio.h>
    
    void main()
    {
        printf("Hello world\n");
        return;
    }
    

    运行结果:g++ test.c
    这里写图片描述

    main()

      那既然main函数只有一种返回值类型,那么是不是可以不写?规定:不明确标明返回值的,默认返回值为int,也就是说 main()等同于int main(),而不是等同于void main()。在C99中,标准要求编译器至少给 main() 这种用法来个警告,而在c98中这种写法是被允许的。但为了程序的规范性和可读性,还是应该明确的指出返回值的类型。
      测试代码:
      

    #include <stdio.h>
    
    main()
    {
        printf("Hello world\n");
        return 0;
    }

    运行结果:
    这里写图片描述

    C和C++的标准

      在最新的 C99 标准中,只有以下两种定义方式是正确的:

           int main( void ) 
    
           int main( int argc, char *argv[] ) 
    

      若不需要从命令行中获取参数,就使用int main(void) ;否则的话,就用int main( int argc, char *argv[] )。当然参数的传递还可以有其他的方式,在下一个文章中,会单独来讲。 main 函数的返回值类型必须是 int ,这样返回值才能传递给程序的调用者(如操作系统),等同于 exit(0),来判断函数的执行结果。

    C++98 中定义了如下两种 main 函数的定义方式:

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

      int main( ) 等同于 C99 中的 int main( void ) ;int main( int argc, char*argv[] ) 的用法也和C99 中定义的一样。同样,main函数的返回值类型也必须是int。

    return 语句

      如果 main 函数的最后没有写 return 语句的话,C99 和c++98都规定编译器要自动在生成的目标文件中加入return 0,表示程序正常退出。不过,建议你最好在main函数的最后加上return语句,虽然没有这个必要,但这是一个好的习惯。
      在linux下我们可以使用shell命令:echo $? 查看函数的返回值。
      
      

    #include <stdio.h>
    
    int main()
    {
        printf("Hello world\n");
    }

    运行结果:
    这里写图片描述
      
      同时,需要说明的是return的返回值会进行 类型转换,比如:若return 1.2 ;会将其强制转换为1,即真正的返回值是1,同理,return ‘a’ ; 的话,真正的返回值就是97,;但是若return “abc”; 便会报警告,因为无法进行隐式类型转换。

    测试main函数返回值的意义

      前文说到,main函数如果返回0,则代表程序正常退出。通常,返回非零代表程序异常退出。在本文的最后,测试一下:
      
    test.c

    #include <stdio.h>
    
    int main()
    {
        printf("c 语言\n");
        return 11.1; 
    }

    在终端执行如下:

    ➜  testSigpipe git:(master) ✗ vim test.c
    ➜  testSigpipe git:(master) ✗ gcc test.c
    ➜  testSigpipe git:(master) ✗ ./a.out && echo "hello world"  #&&与运算,前面为真,才会执行后边的
    c 语言
    

      可以看出,操作系统认为main函数执行失败,因为main函数的返回值是11

    ➜  testSigpipe git:(master) ✗ ./a.out 
    ➜  testSigpipe git:(master) ✗ echo $?
    11
    

    若将main函数中返回值该为0的话:

    ➜  testSigpipe git:(master) ✗ vim test.c
    ➜  testSigpipe git:(master) ✗ gcc test.c 
    ➜  testSigpipe git:(master) ✗ ./a.out && echo "hello world" #hello
    c 语言
    hello world
    

      可以看出,正如我们所期望的一样,main函数返回0,代表函数正常退出,执行成功;返回非0,代表函数出先异常,执行失败。

      在下文中会对main函数的参数的使用做一总结。

    展开全文
  • 深度剖析c语言main函数---main函数的参数传递

    千次阅读 多人点赞 2018-07-10 00:20:38
    在上文中,我们主要讲了c语言main函数的返回值问题,本文主要将main函数的参数传递。 main函数传参  首先说明的是,可能有些人认为main函数是不可传入参数的,但是实际上这是错误的。main函数可以从命令行获取...

      在上文中,我们主要讲了c语言main函数的返回值问题,本文主要将main函数的参数传递。

    main函数传参

      首先说明的是,可能有些人认为main函数是不可传入参数的,但是实际上这是错误的。main函数可以从命令行获取参数,从而提高代码的复用性。

    函数原形

      为main函数传参时,可选的main函数原形为:

    int main(int argc , char* argv[],char* envp[]);
    

    参数说明:
      ①、第一个参数argc表示的是传入参数的个数
      ②、第二个参数char* argv[],是字符串数组,用来存放指向的字符串参数的指针数组,每一个元素指向一个参数。各成员含义如下:
      argv[0]:指向程序运行的全路径名
      argv[1]:指向执行程序名后的第一个字符串 ,表示真正传入的第一个参数
       argv[2]:指向执行程序名后的第二个字符串 ,表示传入的第二个参数
       ……
       argv[n]:指向执行程序名后的第n个字符串 ,表示传入的第n个参数
      
     规定:argv[argc]为NULL ,表示参数的结尾。
     
    ③、第三个参数char* envp[],也是一个字符串数组,主要是保存这用户环境中的变量字符串,以NULL结束。envp[]的每一个元素都包含ENVVAR=value形式的字符串,其中ENVVAR为环境变量,value为其对应的值。envp一旦传入,它就只是单纯的字符串数组而已,不会随着程序动态设置发生改变。可以使用putenv函数实时修改环境变量,也能使用getenv实时查看环境变量,但是envp本身不会发生改变;平时使用到的比较少。

    注意:main函数的参数char* argv[]和char* envp[]表示的是字符串数组,书写形式不止char* argv[]这一种,相应的argv[][]和
    char** argv均可。

    char* envp[]

      写个小测试程序,测试main函数的第三个参数:
      

    #include <stdio.h>
    
    int main(int argc ,char* argv[] ,char* envp[])
    {
        int i = 0;
    
        while(envp[i++])
        {
            printf("%s\n", envp[i]);
        }
    
        return 0;
    }
    

    运行结果:部分截图
    这里写图片描述
      envp[] 获得的信息等同于Linux下env命令的结果;

    常用版本

      在使用main函数的带参版本的时,最常用的就是:int main(int argc , char* argv[]);变量名称argc和argv是常规的名称,当然也可以换成其他名称。命令行执行的形式为:可执行文件名 参数1 参数2 … … 参数n。可执行文件名称和参数、参数之间均使用空格隔开。

    示例程序

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

    运行结果:

    ➜  cpp_workspace git:(master) ✗ vim testmain.c 
    ➜  cpp_workspace git:(master) ✗ gcc testmain.c 
    ➜  cpp_workspace git:(master) ✗ ./a.out 1 2 3    #./a.out为程序名 1为第一个参数 , 2 为第二个参数, 3 为第三个参数
    Total 4 arguments
    Argument argv[0]  = ./a.out 
    Argument argv[1]  = 1 
    Argument argv[2]  = 2 
    Argument argv[3]  = 3 
    Argument argv[4]  = (null)    #默认argv[argc]为null
    
    展开全文
  • go语言的main函数

    万次阅读 2020-09-17 21:28:45
    main函数不能带参数 main函数不能定义返回值 main函数所在的包必须为main包 main函数中可以使用flag包来获取和解析命令行参数

          main函数不能带参数

          main函数不能定义返回值

          main函数所在的包必须为main包

          main函数中可以使用flag包来获取和解析命令行参数

    展开全文
  • [C/C++基础知识] main函数的参数argc和argv

    万次阅读 多人点赞 2014-03-05 01:13:37
    该篇文章主要是关于C++\C语言最基础的main函数的参数知识,是学习C++或C语言都必备的知识点.不知道你是否知道该知识?希望对大家有所帮助. 一.main()函数参数 通常我们在写主函数时都是void main()或int main() {.....
  • 在之前的文章中,介绍了main函数的返回值 和 main函数的传参,本文主要介绍一下main函数的执行顺序。可能有的人会说,这还用说,main函数肯定是程序执行的第一个函数。那么,事实果然如此吗?相信在看了本文之后,会...
  • 在JAVA中,同一个项目中,是允许多个类的存在main函数的。 其实,想一想就明白了,JAVA是真正的面向对象语言;所有程序的运行,都基于类;而每一个类,都应该是完整的。 main函数为static函数,在JAVA里,static...
  • C程序的执行是从main函数开始的,如果在main函数中调用其他函数,在调用后流程返回到main函数,在main函数中结束整个程序的运行。  这段有些莫名其妙的文字即使从汉语语法的角度来说也成问题。成问题的地方在于...
  • IntelliJ 创建main函数快捷

    万次阅读 多人点赞 2014-12-30 17:50:57
    今天偶然发现了IntelliJ中 创建main函数的快捷键,依次还有for循环,System.out.println(); 在编写代码的时候直接输入psv就会看到一个psvm的提示,此时点击tab键一个main方法就写好了。 psvm 也就是public static ...
  • main函数位置

    千次阅读 2017-04-26 17:20:00
    c语言中main函数的位置可以任意位置。在执行一个c语言编写的程序时,main函数就相当于是执行程序的入口。只要是没有语法和逻辑上的错误,main函数可以放在任意位置。...
  • main函数是C语言中比较特殊的函数,C程序总是从main函数开始执行,main函数的原型是: 1 int main(int argc, char *argv[]); 其中argc是命令行参数的个数,argv是指向参数的各个指针所构成的数组。 当内核...
  • ????“Python猫” ,一个值得加星标的公众号毫无疑问 Python 中没有所谓的 main 入口函数,但是网上经常看到一些文章提“Python 的 main 函数”、“建议写 ...
  • go中main函数

    千次阅读 2019-01-22 22:17:25
    /* ...  * TEL 15010729356  * go中main函数  */ main函数不能带参数 main函数不能定义返回值 main函数所在的包必须为main包 main函数中可以使用flag包来获取和解析命令行参数  ...
  • main函数与WinMain函数区别:前者为控制台程序入口主函数,后者为Windows API窗体程序入口函数,在windef.h文件中定义。main函数与wmain函数 | WinMain函数与wWinMain函数的区别:wmain函数式main函数的宽字符版本,...
  • C# Main函数

    千次阅读 2017-08-06 10:38:47
    当创建一个C#可执行应用程序(控制台,Windows桌面程序或Windows服务)的时候,会自动创建一个雷Program,该类中有一个静态的Main函数Main函数的签名: 签名:指的是一个方法具有的名称、返回类型和参数列表。 ...
  • 记得大一学C语言的时候,我们就知道一个工程中只能有一个main函数 最近下载了CLion,我很懒,想在一个工程下建好几个c文件,里面都有main函数,结果编译运行的时候不通过 这才想起来,无论有多少复杂的c文件和函数,...
  • 如何在main函数外获取main函数的参数(argc、argv)在main函数主函数外不采用全局变量的方式获取argc、argv调用attribute,在程序的.init_array字段添加指定函数地址,其传入的参数中就有argc、argv参数。...
  • C语言main函数的写法

    万次阅读 多人点赞 2018-01-03 20:02:29
    main函数是C程序的入口函数,即程序的执行是从main函数开始,对其他函数的调动也是直接或间接地在main函数中被调用。那么main函数又是被谁调用呢?答案是操作系统。C语言发展至今,对main函数有多种不同的写法,下面...
  • main()、void main()、int main()、int main(void)、int main(int argc, char *argv[])、int main(int argc, char **argv)...这些哪个才是main函数的标准写法?如何为main函数传入参数?如何获取main函数的返回值?
  • 查找main函数

    千次阅读 2018-06-26 12:28:56
    寻找main函数的主要目的,还是寻找用户代码,所以通常只用在控制台程序和SDK程序。 其他界面程序会使用各种界面库,即便找到main函数,里面也是一堆非用户编写代码,没有任何意义。 2.调用方式会影响代码特征 VS...
  • C语言main函数的参数

    千次阅读 2019-08-04 07:56:56
    在我们之前编写的C程序中,main函数是没有参数的,但是在实际开发中,main函数一般都需要参数,没有参数的情况极少。 main函数的参数是从命令提示符下执行程序的时候传入,例如ls 命令。 在以上示例中ls命令...
  • C语言main函数返回值详解

    万次阅读 2019-08-30 23:54:28
    前言:本文程序代码均在...C语言的main函数有两个标准写法 // C99加入两种 main 标准写法 int main(void) // 标准一写法 // 和 int main(int argc,char *argv[]) // 标准二写法 int main(int argc,char **argv) // ...
  • golang 函数,变参函数,init函数,全局变量函数,main函数, 函数指针, defer函数 package main import( . “fmt” ) type funcTest func(int)(bool) func isOdd(old int) bool { if old &gt; 9 { ...
  • main函数带有参数

    千次阅读 2019-03-03 09:08:26
    main函数的参数 前面介绍的main函数都是不带参数的。因此main 后的括号都是空括号。实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数。C语言规定main函数的参数只能有两个, 习惯上这两个...
  • C++程序包含一个或者多个函数,但是必须有一个函数被命名为main函数。操作系统通过调用main函数来执行程序,main函数是操作系统唯一显式调用的函数。main函数在执行结束后会返回给操作系统一个值,该值必须是int型的...
  • C++ main函数中参数argc和argv含义及用法

    万次阅读 多人点赞 2016-07-22 00:08:27
    argc 是 argument count的缩写,表示传入main函数的参数个数; argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0]一定是程序的名称,并且包含了程序所在的完整路径,所以...
  • main函数的return

    千次阅读 2018-07-16 10:14:35
    return是一个关键字,调用return会进行函数的返回,将后面的参数返回给调用者(main函数也是被调用的),并销毁调用堆栈。 以上是return函数的作用,接下来主要看一下main函数的return之后会发什么。测试代码如下:...
  • python的main函数

    万次阅读 2016-12-01 00:42:27
    一个简单的样例,示范Python的Main函数以及参数的调用。
  • main 函数原型及参数

    千次阅读 2017-03-28 20:56:16
    Main 函数不是第一个执行的函数Main 函数原型C/C++ 中的main 函数,经常带有参数 argc,argv,如下:int main(int argc,char** argv)int main(int argc,char* argv[])int main(int argc, char* argv[], char* env[] ...
  • go中的main函数和init函数

    千次阅读 2017-05-02 19:38:15
     Go里面有两个保留的函数:init函数(能够应用于所有的package)和main函数(只能应用于package main)。这两个函数在定义时不能有任何的参数和返回值。虽然一个package里面可以写任意多个init函数,但这无论是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 123,546
精华内容 49,418
关键字:

main函数