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[] )

Main 函数参数

参数的作用:

argc   命令行输入参数的个数 (以空白符为分隔)

argv   存储了所有命令行参数 ,以NULL 结束

env    环境变量,以NULL 结束

eg

运行hello如下:

hello sduer 1

那么
argc = 3
argv[] 中 则存储了 ”hello.exe“ “sduer” “1”这三个字符串
env[] 中存储了系统的环境变量

    #include <stdio.h>

    int main(int argc, char ** argv)
    {
        int i;
        for (i=0; i < argc; i++)
            printf("Argument %d is %s.\n", i, argv[i]);
        for(i = 0; env[i] != NULL; i++)  
        {  
        printf("env[%d]=%s\n",i,env[i]);  
        } 
        return 0;
    }

terminal 运行情况如下

~$ ./hello sduer 1
Argument 0 is ./hello.
Argument 1 is sduer.
Argument 2 is 1.
env[0]=LC_PAPER=zh_CN.UTF-8
env[1]=XDG_VTNR=2
env[2]=LC_ADDRESS=zh_CN.UTF-8
env[3]=SSH_AGENT_PID=1912
env[4]=XDG_SESSION_ID=3
env[5]=CLUTTER_IM_MODULE=xim
env[6]=LC_MONETARY=zh_CN.UTF-8
....

Main 函数 返回值

main函数的返回值是返回给父进程的,父进程调用以下函数来获取子进程的退出码(即main函数的返回值)

pid_t wait(int* status);
pid_t waitpid(pid_t pid, int* status, int option);

#include <stdio.h>

int main(int argc, char* argv[])
{
    printf("Hello World!\n");    
    return 100;
}

在bash在,执行一个命令后(bash里是父进程,命令是子进程),$?里存放的是这个命令的退出码
./hellowrold ; echo $?

运行結果:
Hello World!
100

Main 函数不是第一个执行的函数

#include <stdio.h>  
__attribute ((constructor)) void hello_init(void)  
{  
    printf("%s\n",__func__);  
    return;  
}  
__attribute ((destructor)) void hello_fini(void)  
{  
    printf("%s\n",__func__);  
    return;  
}  
int main(int argc, char* argv[])  
{  
    printf("Hello World!\n");  
    return 0;  
}  

//运行結果:
hello_init
Hello World!
hello_fini

后两小节 参考自 Hello World

http://blog.youkuaiyun.com/ooaven/article/details/6101409

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值