C/C++中main函数的三个参数与环境变量的获取

深入理解C语言main函数:如何接收和处理命令行参数 (argc, argv) 本文介绍了C语言中main函数接收命令行参数的机制,重点讲解了argc和argv参数的作用与使用方法。通过基础示例演示了如何打印所有命令行参数,并提供了一个实用的命令行加法器案例。文章指出,掌握命令行参数处理是C语言从练习走向实际应用的关键一步,让程序能够与操作系统和用户进行灵活交互。核心内容包括:argc表示参数数量(至少为1),argv是存储参数的字符串数组,argv[0]为程序名;可通过终端或IDE配置传递参数;建议使用atoi/atof等函数进行参数类型转换。 阅读详情

C/C++的main函数除了常见的argc、argv,还具有第三个指定的参数envp,完整的引用方式如下:

main(int argc, const char *argv[], const char *envp[])      //void类型没有参数

1.argc为整数

2.argv为指针的指针(可理解为:char **argv or: char *argv[] or: char argv[][]   ,argv是一个指针数组)

3.envp的类型同argv

 

4.举例说明argc、argv这2个参数的作用:

   假设程序的名称为prog1,

   当只输入prog1,则操作系统传来的参数为:

   argc=1,表示只有一程序名称。

   argc只有一个元素,argv[0]指向输入的程序路径及名称:./prog1

 

   当输入prog1 para_1,有一个参数,则操作系统传来的参数为:

   argc=2,表示除了程序名外还有一个参数。 

   argv[0]指向输入的程序路径及名称。

   argv[1]指向参数para_1字符串。

 

   当输入prog1 para_1 para_2 有2个参数,则操作系统传来的参数为:

   argc=3,表示除了程序名外还有2个参数。

   argv[0]指向输入的程序路径及名称。

   argv[1]指向参数para_1字符串。

   argv[2]指向参数para_2字符串。

   argv 是一个指针数组,他的元素个数是argc,存放的是指向每一个参数的指针

5.envp用于获取环境变量,与argv的类型相同,使用起来几乎一样,不同之处在于系统默认使用了argc、argv,可以省略不写,要使用envp在定义main时必须写出来才行。

直接看使用例子:

#include<iostream>
using namespace std;

int main(int agrc,char * argv[],char * envp[])
{
    cout << "environment paramter in my system: "<<endl;

    for(int i  = 0 ;  envp[i] ; ++i)
    {
        cout<<envp[i]<<endl;
    }
    return 0;

}

本例打印出系统中的环境变量。

6.ISO C/ISO C++ ,POSIX 标准不支持main 三个参数的定义形式,VC 和GNU编译器扩展了main 函数的定义,所以目前可以这样使用。 这里给出另一种获取环境变量的方法,可移植性强,推荐使用。

#include<iostream>
#include<stdlib.h>
using namespace std;

extern char** environ;

int main(int agrc,char * argv[])
{
    cout << "environment paramter in my system: "<<endl;

    char ** env = environ;
    for(int i  = 0 ;  env[i] ; ++i)
    {
        cout<<env[i]<<endl;
    }
    return 0;

}

这里使用了全局变量environ替代envp,效果是一样的,要使用environ需要载入stdlib.h,另外,访问特定的环境变量,还可以使用getenv 和putenv函数,都定义在stdlib.h中。

C/C++ main函数四种写法详解:int main()、void main()、main()、int main(void)的区别与标准 在C/C++编程中,main函数作为程序入口,其签名写法直接影响代码的可移植性和标准符合性。从语言标准原理来看,操作系统需要通过返回值获取程序执行状态,这决定了main函数应返回int类型。在技术价值层面,遵循ISO/IEC标准能确保代码在不同编译器和平台间的兼容性,避免未定义行为。实际应用场景包括命令行工具开发、跨平台项目、嵌入式系统等,都需要正确处理main函数签名。本文聚焦int main()、void main()、main()和int main(void)这四种常见写法的区别,其中void mai 阅读详情

相关推荐

GPT Researcher 的win docker安装攻略

github网址是:https://github.com/assafelovic/gpt-researcher/blob/master/README-zh_CN.md。使用 Docker 运行 AI-Researcher 项目的。因为docker安装方法不够清晰,因此写一个使用方法。打开设置——docker engine ,增加代码。如有其他问题,可提供错误截图或日志进一步排查!

weixin_43818488的博客 1123

C/C++ Main获取命令行参数

在用 C/C++ 写一些工具时,需要通过命令行传一些参数,这样就可以在命令行终端使用该工具或在脚本中使用该工具,从而实现批量处理。 比如近期需要实现一个对文件进行加解密的工具,我需要通过命令行传递如下参数: 需要处理的输入文件; 处理类型:加密还是解密; 处理多少长度; 输出文件; 1、函数说明 本文采用的短参数,函数定义如下: #include <unistd.h> //系统头...

AlanWang4523 1万+

告别OLE!Delphi操作Excel的3种轻量级方案横向评测(FlexCel/XLSReadWriteII/LibXL)

本文深入评测了Delphi操作Excel的三种轻量级方案:FlexCel、XLSReadWriteII和LibXL。通过技术架构、API设计、性能测试和实战案例的全面对比,帮助开发者选择最适合的工具,提升Excel文件处理效率,告别传统OLE方案的依赖和性能问题。

onion的博客 929

[C/C++基础知识] main函数的参数argc和argv

该篇文章主要是关于C++\C语言最基础的main函数的参数知识,是学习C++或C语言都必备的知识点.不知道你是否知道该知识?希望对大家有所帮助. 一.main()函数参数 通常我们在写主函数时都是void main()或int main() {..return 0;},但ANSI-C(美国国家标准协会,C的第一个标准ANSI发布)在C89/C99中main()函数主要形式为: (1).int

杨秀璋的专栏 9万+

大数据应用技术实验报告一 Hadoop三种模式安装配置

JDK+Hadoop安装配置、单机模式配置 以下操作在SecureCRT里面完成 1.关闭防火墙 firewall-cmd --state 显示防火墙状态running/not running systemctl stop firewalld 临时关闭防火墙,每次开机重新开启防火墙 systemctl disable firewalld 禁止防火墙服务。 2.传输JDK和HADOOP压缩包 Sec...

Ruthless_Childe的博客 3090

Delphi开发者必备:CEF4Delphi跨平台浏览器嵌入实战指南(含Lazarus适配)

本文详细介绍了Delphi开发者如何利用CEF4Delphi实现跨平台浏览器嵌入,包括环境配置、Lazarus适配、ARM架构优化及Firemonkey集成等实战技巧。通过Chromium引擎的强大功能,开发者可以轻松为传统桌面应用添加现代浏览器特性,提升多平台开发效率。

weixin_29233333的博客 226

如何在main函数外获取main函数的参数(argc、argv)

如何在main函数外获取main函数的参数(argc、argv)在main函数主函数外不采用全局变量的方式获取argc、argv调用attribute,在程序的.init_array字段添加指定函数地址,其传入的参数中就有argc、argv参数。代码示例#include <stdio.h> #include <string.h>static void get_main_para_test(int a

libinbin_1014的专栏 6756

从零构建RK3568视频处理管线:C++ V4L2捕获与RKMPP硬编解码实战

本文详细介绍了在RK3568平台上,使用C++语言从零构建高性能视频处理管线的实战过程。核心内容包括通过V4L2接口高效捕获摄像头视频流,并利用RKMPP硬件编码器实现零拷贝的H.264/H.265硬编码。文章深入讲解了设备初始化、DMA缓冲区管理、编码器参数配置以及主循环协同工作等关键步骤,旨在帮助开发者构建低延迟、高效率的嵌入式视频应用。

weixin_29193359的博客 84

main函数的参数-argc,argv介绍

在main函数的定义形式中,会涉及到argc,argv以及envp参数(参考上一篇:C程序main函数),下面介绍main的这三个参数: 参数argc和argv代表了程序的命令行参数,也可以根据需要另外命名: argc(argument count):argc的值为0或者为命令行中启动该程序的字符串数量。值得注意的是:程序本身的名称也算作该字符串,也要计算进去。 argv(arguments vector):是一个char指针数组,每个指针都独立地指向命令行中每个字符串: -数组中元素的个数,比ar

m0_52892985的博客 2990

SPSS 多重共线性问题:编程解决方案

多重共线性会导致回归模型的不稳定性,使得估计的回归系数失去解释力,降低模型的准确性和可靠性。通过执行这些代码,你将能够计算和查看VIF和CI的结果,并确定是否存在多重共线性问题。上述代码执行了一个回归分析,其中A是我们感兴趣的因变量,B、C、D和E是我们要检查的自变量。接下来,我们将执行多重共线性的检测。通过执行上述代码,你将能够看到每个自变量的VIF和CI值,以及预先设置的阈值。上述代码将计算VIF和CI的值,并将结果写入指定路径的结果文件中。接下来,我们可以使用以下代码来计算和显示VIF和CI的值。

CyberGenius的博客 1426

深度学习实战87-高中数学自适应测试系统研究与应用研发,前后台页面设计

大家好,我是微学AI ,今天给大家介绍一下深度学习实战87-高中数学自适应测试系统研究与应用研发,前后台页面设计。高中数学自适应测试系统旨在通过精准评估学生能力,用最少的题目发现其薄弱环节,并提供定制化的学习计划,帮助学生快速提升成绩。同时,系统结合了AI大模型实现自动判卷、生成报告,减轻教师负担,并支持个性化作业布置,使教学更加高效。学生可以清晰了解自身学习状态,教师也能获得精准的学生画像,实现差异化教学。

微学AI的博客 444

C语言main函数参数详解

main函数参数 一共有三个: 1.int argc 整型变量 2.char *argv[] 字符指针的数组,通俗一点就是字符串数组,每个元素都是字符串 3.char *envp[] 字符串数组 这三个东西再怎么神秘,也只是函数参数,只不过是main函数的参数罢了!   一、int argc参数 用于存放命令行参数的个数 二、char *argv[]参数 每个元素都是一个字符串,表示命令行中的每一个参数。   关于int argc和char *argv[]参数,我用以下代码说

weixin_44915226的博客 1万+

前拉后推计划逻辑适用于哪些行业和企业规模?

《前拉后推计划逻辑的行业适用性分析》摘要:前拉后推计划逻辑(需求端后推锚定交付、供应端前拉匹配资源)最适用于需求波动大且具规模效益的行业,包括家具制造(定制化需求+批量运输)、机械装备(非标设备+部件采购)、消费电子(短周期产品+核心部件备货)及汽车配套(交期绑定+批量生产)等领域。该模式要求企业具备:1)独立计划部门;2)ERP/MES等信息系统;3)资源冗余能力,故更适配中型(1-10亿营收)和大型企业(10亿+)。小型企业需简化应用,仅聚焦关键环节。不适配需求稳定(如快消品)、无规模效益或短周期生产的

追随内心 144

【Linux系统化学习】命令行参数 | 环境变量的再次理解

本片文章是继上篇对命令行参数和环境变量更深入的介绍!!!

qq_55119554的博客 747

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

main的第三个参数

main有第三个参数为: env 即环境变量main(int argc,char *argv[],char **env)其中的env为环境变量,虽被广泛支持,但POSIX不支持。在Linux系统中也可以使用全局变量extern char ** environ;来获取所有的环境变量。 转载于:https://www.cnblogs.com/ubunoon/archive/2007/02/2...

weixin_30432007的博客 95

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

『Linux从入门到精通』第 ⑮ 期 - main函数的三个参数你见过吗?

你知道main函数有几个参数呢?你使用过它们吗?本章我们就一起来认识一下main函数的几个不常见但是作用很大的参数~

花想云的博客 2064

C/C++ 给main()传递参数

C/C++ 给main()传递参数 我把C和C++的源代码都会写下,但各位要点赞! Dev-C++也可以写C 先不急,这不是个方法,这是个知识点。 在我掌握这个知识点前,我与大家一样,main这么写: C int main(void) { return 0; } C++ using namespace std; int main(void) { return 0; } 是吧?(void...

Varible的博客 8077

main函数的第三个参数envp

本文首发于个人博客http://huqijun.com, 转载需或者作者授权!main函数两种常见形式在C/C++ 程序中, 操作系统通过main函数来调用程序,main函数是从程序的入口。常见的main 函数定义有如下两种方式: int main(void) int main(int argc,char * argv[]) 第一种方式main 不接受参数,第二种方式可以在通过shell调

所有内容都已迁移到 https://huqijun.org 6444

C/C++中main函数接受外部参数的写法,以及如何传参数

C/C++语言中的main函数,经常带有参数argc,argv,如下: int main(int argc, char* argv[])//argv[0]表示一个指针 int main(int argc, char **argv)// *argv同样表示一个指针 argc: 整数, 为传给main()的命令行参数个数。  char** argv / char *argv[]

selina8921的博客 3万+

C/C++中main函数参数的作用

以以下代码为例printf("程序名称: %s\n", argv[0]);printf("参数个数 (包括程序名): %d\n", argc);int i=0;for (;i < argc;argc参数计数int含义:表示命令行参数的数量重要argc的值至少为1,因为第一个参数总是程序本身的名称argv参数向量char*数组(字符串数组)含义:包含所有命令行参数的字符串数组(指针数组)索引规则argv[0]:程序名称或路径argv[1]到:用户提供的实际参数。

2401_89119815的博客 1344

[Linux]详解main函数的三个参数

目录argc与argvenv常见的环境变量环境变量相关命令通过代码查看环境变量./main执行和main执行是否应该使用第三个参数env C程序总是从main函数开始执行的,main函数的原型是: int main(int argc, char* argv[], char* env[]) argc与argv argc表示传入main函数的参数个数; argv[]表示传入main函数的参数序列或指针...

~Ran~ 2087

C/C++学习日志——main函数

1.C++的main函数并不直接由我们来使用,而是操作系统会获取到。2.return 0是为了确保再程序运行结束后给操作系统一个信号,表示这个程序没问题,安全的执行了。返回值其实就是return后面带的值,不同的地方的返回值可能类型也是不一样的,用处也可能不一样。3.main函数的参数有两个,分别是int类型的argc和字符数组char**类型的argv4.手动编译运行程序,可以在命令行里执行,这时就可以往main函数里传参数了。

2403_88750971的博客 1015

C/C++ 中 main(int argc, char* argv[], char** env) 函数的参数及应用

C 中 main( ) 函数的参数及应用 main 中参数介绍 通常在我们使用 main( ) 函数时,格式如下: int main(){ ... return 0; } main( ) 函数中括号内是不需要传递参数的,然而有些时候我们却会碰到带了多个参数的main: int main(int argc, char* argv[], char** env) 这些参数究竟是什么意思呢? 第一个参数int argv代表命令行参数个数,argv值至少为1,更确切地说是代表第二个参数char*

YJY-Simon的博客 5790

[原创]C/C++语言中,如何在main.c或main.cpp中调用另一个.c文件

  C/C++语言中,如何在main.cpp中调用另一个.c文件主要有5种思路:   1、在VS2012 IDE中,将被引用的.c文件后缀名全部修改为.h,然后通过IDE的解决方案资源管理器中鼠标右键单击“头文件”-"添加"-“现有项”,选中修改后缀名后的.h文件-"添加",将待引用的文件添加到工程中。   添加到“头文件”而不是“源文件”的作用:主要是使头文件的项类型属性为“C/C++ 标头”...

weixin_33834628的博客 2970

【C/C++ main函数】深入探索C++中的main函数及其参数

在编程的世界中,`main`函数是每个程序员都会遇到的第一个“门槛”。它是程序的入口点,是程序开始执行的地方。但是,为什么我们需要`main`函数?它的参数`argc`和`argv`又是什么?为什么它们是如此设计的?

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 1276

探索C/C++ main函数传参:成为编程高手的关键步骤

探索C/C++ main函数:成为编程高手的关键步骤

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 2735
上一篇: python列表按元素(对象、类)的某个属性排序
下一篇: 全栈工程师技能图谱
a_lgorithm
博客等级 码龄9年 7粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值