主函数的参数argc、argv、envp

主函数的三个参数

  • int main(int argc, char* argv[], char* envp[])
  • argc 主函数的参数个数
  • argv 主函数的参数内容
  • envp 环境变量

首先我们写这样一段代码,来查看main函数的参数都有那些

#include<stdio.h>

int main(int argv,char argv[],char envp[])
{
        int i = 0;
        printf("argc = %d\n",argc);
        for(;i<argv;i++)
        {
                printf("argv[%d] = %s\n",i,argv[i]);
        }
        return 0;
}

编译后,./main 执行得到
在这里插入图片描述
显示有一个参数,参数是“.main”
我们再次执行,这次输入./main hello 123 看看会得到什么
在这里插入图片描述
看到我们的主函数分别把输入的每个字符串都存储为一个参数
但是如果我们这样输入,./main "hello 123" 这样主函数会识别为两个参数,因为主函数是以字符串的方式来进行接收参数的
在这里插入图片描述
像例如我们经常使用的命令:ls -l 这些 -l 也就是作为参数,传递进程序

我们修改一下上面的代码,再来看看环境变量

#include<stdio.h>

int main(int argc,char* argv[],char* envp[])
{
        int i = 0;
        printf("argc = %d\n",argc);
        for(;i<argc;i++)
        {
                printf("argv[%d] = %s\n",i,argv[i]);
        }
        for(int i =0;envp[i]!=NULL,i++)
        {
        		//环境变量结束会指向一个空指针
                printf("envp[%d] = %s\n",i,envp[i]);
        }
        return 0;
}

理论上讲,环境变量来自父进程的继承,我们编译运行这个程序
在这里插入图片描述
输出了非常多的信息,一共有57个环境变量,我们人为为他增加一个环境变量
在这里插入图片描述
每当我们运行./main 的时候都是通过bash 来复制一个进程替换我们需要执行的程序,所以main程序会继承我们刚才在bash上添加的环境变量
在这里插入图片描述
执行发现,首先环境变量数量变多了一个,多的那个一个就是我们新添加的"MYSTR"
在这里插入图片描述
在这里插入图片描述

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值