关于main函数参数列表的那些事

写在最前面:

本篇博客所写代码,全部都依赖于Linux环境。

在开始之前,我们先问自己几个问题:

  • main函数可以传参吗?
  • 如果main函数可以传参,最多可以传几个参数。
  • main函数传递的参数具体作用是什么?

一.是否可以传参?

也许,我们没有见过main函数传参,但是main函数确实是可以传参的,而且有着非常广泛的使用。

二.可以传几个

main函数最多可以传3个参数:int argc,char *argv[],char *env[]

三.参数具体作用

1.int argc

学过Linux相关命令的同学都知道:Linux同一个命令可以带不同的选项,不同的选项会产生不同的作用,如:

  • 我们平时在使用指令的时候会添加很多的选项比如说ls指令,单独使用ls指令会将当前路径下的每个可见文件的文件名全部显示出来并且一行显示多个文件名
  • 如果给ls指令添加-a选项就可以显示隐藏文件的文件名并且也是一行显示多个
  • 如果给ls指令添加-l选项那么可以显示当前路径下的所有可见文件的详细信息,并且一行显示一个
  • ls -l指令还可以简化成为ll并且功能还是一样的
  • 有些选项还可以结合在一起使用比如说-a选项是显示所有文件,-l选项是显示可见文件的详细信息,那-al选项就是显示所有文件的详细信息

argv=可执行程序和命令行选项总数。

2.char *argv

这个参数就有意思了哈,这是一个字符串指针数组。 数组大小是argc,最后一个元素为null。数组中存储着输入的指令和选项,

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

我们难道不好奇:操作系统是怎样解析出选项的吗?
在操作系统来,它把命令行输入的整体作为一个长字符串,然后根据选项之间的空格,把选项之间解析开。

3char *env[ ]

数组中存放的是系统中的环境变量(环境变量就是一个字符串)的地址,数组最后一个元素为null。

cpp 复制代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(int argc,char *argv[],char*env[])
{
    int i=0;
    while(env[i])
    {
        printf("%d:%s\n",i,env[i]);
        i++;
    }
相关推荐
Yana.nice1 小时前
openssl将证书从p7b转换为crt格式
java·linux
AI逐月1 小时前
tmux 常用命令总结:从入门到稳定使用的一篇实战博客
linux·服务器·ssh·php
想逃离铁厂的老铁1 小时前
Day55 >> 并查集理论基础 + 107、寻找存在的路线
java·服务器
小白跃升坊2 小时前
基于1Panel的AI运维
linux·运维·人工智能·ai大模型·教学·ai agent
跃渊Yuey2 小时前
【Linux】线程同步与互斥
linux·笔记
杨江2 小时前
seafile docker安装说明
运维
舰长1152 小时前
linux 实现文件共享的实现方式比较
linux·服务器·网络
好好沉淀2 小时前
Docker开发笔记(详解)
运维·docker·容器
zmjjdank1ng2 小时前
Linux 输出重定向
linux·运维
路由侠内网穿透.2 小时前
本地部署智能家居集成解决方案 ESPHome 并实现外部访问( Linux 版本)
linux·运维·服务器·网络协议·智能家居