main函数的参数
其实我们所调用的main函数是有参数的
它一共有三个参数 分别是 argc argv envp
其中argv是一个指针 它指向一个数组 里面储存的是char*类型的数据
argc是一个整数 它标识着argv中有效元素的个数
我们可以写下下面的代码来验证
我们首先来验证下argc的个数
假如我们main函数后面不带选项 那么此时argc的个数是多少呢?
我们发现它走了第一个条件
其实这也很好理解 因为在什么条件都没有的时候argv的数组中有一个本程序的地址
当我们对于argc 和 argv有了更深一步的认知之后我们就可以在我们编写的程序中加入选项做一些事
比如说我们可以写下下面的代码
如果我们后面所携带的参数不同 那么这个程序就会做不同的事情
下面是演示效果
大概的argv数组图如下所示
我们再来看看它的第三个参数 envp
我们前面说过了 它其实就是一个二级指针 指向一个数组 里面全部是char*类型的数据 也就是环境变量 数组中的最后一个数据为空
那么我们可以直接遍历之来获取环境变量
此外 我们还可以直接用二级指针 environ来获取环境变量
注意 libc中定义的全局变量environ指向环境变量表 environ没有包含在任何头文件中 所以在使用时要用extern进行声明
代码标识如下
运行结果如下
我们可以发现二者并没有很多差别
通过系统函数来获取环境变量
除了我们上面所说的方法之外我们还可以使用getenv系统函数来查看环境变量
具体使用代码如下所示
效果如下
思维导图总结