C++中main函数的参数

article/2025/10/1 20:09:50

C++中main函数的参数

问题

对于一个C/CPP文件来说,一般都有main函数,一个程序的执行一定会是先从main函数这个入口开始,一个最基本的程序框架大概长这样:

#include <stdio.h>
int main()
{return 0;
}

但是,我们有时候看到的main函数这个括号里面还有别的东西,比如:

#include <stdio.h>
int main(int argc, char *argv[])
{return 0;
}

或者

#include <stdio.h>
int main(int argc, char **argv)
{return 0;
}

那么问题来了,这个argcargv有什么用呢,为什么会有这个东西,有没有这个东西貌似对程序的执行并没有什么影响.

问题的探究

首先很容易看出char **argvchar *argv[]是等价的,无非是同一种东西两种写法。

argcint型的,我们可以做一个测试,我们尝试打印一下这个值,看看它是什么?

我们可以测试一下以下程序:

#include <stdio.h>
int main(int argc, char **argv)
{printf("%d\n", argc);return 0;
}

编译:g++ main.cpp -o main,运行./main,然后做一个测试,如图:

从图中一共进行了三次测试:

  • 第一次:输入./main,然后程序运行结果是1
  • 第二次:输入./main 1 2,程序执行结果是3
  • 第三次:输入./main 1 2 3 4 5 6,程序执行结果是7

答案已经很明显了,argc获取到了这个可执行程序一共接受到了多少个参数,第一个只有./main这一个参数,后面的./main 1 2 3 4 5 6一共有7个。

那么还有第二个问题,char **argv这个里面是什么,我们继续探究,写一个程序把这里面的东西打印出来:

#include <stdio.h>
int main(int argc, char **argv)
{printf("argc = %d\n", argc);for (int i = 0; i < argc; i++)printf("%s\n", argv[i]);return 0;
}

然后进行测试:

我们可以看出,argv实际上保存的就是我们输入进去的参数,它保存在了一个字符串里。

总结

因为有了这两个参数,所以我们平时用的很多命令行的工具都是通过这两个参数的传值来知道你的意图。

如果不需要进行命令行参数的获取,当然也可以不打int argc, char **argv这一句。

参考资料:

  • What does int argc, char *argv[] mean?(来自 Stack Overflow)

http://chatgpt.dhexx.cn/article/d5Iij8Mu.shtml

相关文章

C++ main函数的参数

int main(int argc, char* argv[]) 那main函数的argc和argv参数是什么意思呢&#xff1f; 这两个参数主要是用来保存程序运行时传递给main函数的命令行参数的。 argc&#xff1a;是argument count 的缩写&#xff0c;保存运行时传递给main函数的参数个数。 argv&#xff1a;是…

main函数的参数的含义

转载自&#xff1a;点击链接 链接2 加qq1126137994 微信&#xff1a;liu1126137994 一起学习更多技术&#xff01;&#xff01;&#xff01; 最近学习服务器网络编程&#xff0c;遇到了一个问题&#xff0c;main函数的参数&#xff0c;特意整理资料记录之&#xff01;&#…

C++main函数及参数

转载自&#xff1a;https://www.cnblogs.com/carsonzhu/p/5276317.html C main()函数及其参数 1、首先&#xff0c;想想C/C在main函数之前和之后会做些什么&#xff1f; 我们看看底层的汇编代码&#xff1a; __start: :      init stack;      init heap;     …

带参数的的main函数

在main()函数中允许带2个参数&#xff0c;一个为整型argc,另一个是指向字符型的指针数组argv[]。格式&#xff1a; int main(int argc,char *argv[])   其中整型argc表示命令行中字符串的个数&#xff0c;指针数组argv[]指向命令行中的各个字符串。这两个参数可以用任何合法…

C语言main函数参数详解

main函数参数 一共有三个&#xff1a; 1.int argc 整型变量 2.char *argv[] 字符指针的数组&#xff0c;通俗一点就是字符串数组&#xff0c;每个元素都是字符串 3.char *envp[] 字符串数组 这三个东西再怎么神秘&#xff0c;也只是函数参数&#xff0c;只不过是main函数的参数…

main函数的参数

main函数可以不带参数,也可以带参数&#xff0c;这个参数可以认为是 main函数的形式参数。C语言规定main函数的参数只能有两个&#xff0c;习惯上这两个参数写为argc和argv。因此&#xff0c;main函数的函数头可写为&#xff1a; main (argc,argv) C语言还规定argc(第一个形参…

main函数的参数解析

下面我们看一下main函数的原型&#xff1a; int main(int argc char* argv[],char* envp) {program-statements } 其实main函数有三个参数&#xff1a; 第一个参数&#xff1a;argc是个整型变量&#xff0c;表示命令行参数的个数&#xff08;含第一个参数&#xff09;。第二…

main 函数参数

一、main函数的参数 main函数有三个参数&#xff0c;argc、argv和envp&#xff0c;它的标准写法如下&#xff1a; int main(int argc,char *argv[],char *envp[])** int argc&#xff0c;存放了命令行参数的个数。 char argv[]&#xff0c;是个字符串的数组&#xff0c;每个元…

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

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

Python遗传算法初学者教程

Python遗传算法初学者教程 从头开始实施遗传算法来解决现实世界的问题&#xff01; 课程英文名&#xff1a;The Ultimate Beginners Guide to Genetic Algorithms In Python 此视频教程共3.0小时&#xff0c;中英双语字幕&#xff0c;画质清晰无水印&#xff0c;源码附件全 …

遗传算法染色体交叉python

遗传算法中两条染色体交叉思想简单&#xff0c;实现略微复杂&#xff0c;所以借鉴https://blog.csdn.net/weixin_41606064/article/details/100862016重新封装了一下&#xff0c;并对其中不完善的地方做了修改&#xff0c;步骤如下&#xff1a; step1:从采用自然数编码的种群中…

Python遗传算法工具箱的使用(二)求解最短路径问题

前言 自从上一篇博客详细讲解了Python遗传和进化算法工具箱及其在带约束的单目标函数值优化中的应用之后&#xff0c;我经过不断学习工具箱的官方文档以及对源码的研究&#xff0c;逐步更加地掌握如何利用遗传算法求解更多有趣的问题了。 首先简单回顾一下Python高性能实用型…

python遗传算法解决分配问题

python遗传算法解决分配问题 import numpy as np import random import matplotlib.pyplot as pltdef get_rand():select [x for x in range(10)]random.shuffle(select)return selecttime np.array([[82, 16, 66, 71, 44, 28, 76, 85, 36, 8],[91, 98, 4, 4, 39, 68, 26, 26…

python遗传算法

学习代码来源于&#xff1a;遗传算法python 一.主要思想 遗传算法是根据达尔文的“适者生存&#xff0c;优胜劣汰”的思想来找到最优解的额&#xff0c;其特点是所找到的解是全局最优解&#xff0c;相对于蚁群算法可能出现的局部最优解还是有优势的。 二.主要名词 个体&…

遗传算法python代码

不知道为什么一个大一的萌新能有这么多事要干......蚁群算法的代码先缓一缓&#xff0c;等博主写完作业&#xff0c;考完英语期中再说吧。关于遗传算法的代码&#xff0c;由于忘记了np数组不copy的时候会直接引用&#xff0c;导致很长一段时间不知道自己哪里出bug了&#xff0c…

python遗传算法解简单整数规划与原理探究

文章目录 一、算例与代码1.1 问题与思路1.2 代码 二、实现细节2.1 什么是种群2.2 编码与解码2.3 如何处理约束2.4 如何从较好解获得新的解 三、反思&#xff1a;真的是采样逼近吗 / 消融实验3.1 最优解和较好解的关系 / 遗传算法为什么可行3.2 为什么交叉能得到更优解3.3 为什么…

遗传算法python

目录 01 遗传本质 02 编码 1.单目标多变量函数 - 无约束 - &#xff08;可画立体图&#xff09; 2.单目标多变量函数 - 罚算法 - 约束​编辑 3.单目标多变量函数 - 带约束 (不明白得出了什么东西&#xff0c;可能是输出评价指标&#xff1f;) 4.多目标函数 - 带约束 可…

python遗传算法(应用篇1)--求解一元函数极值

目录 遗传算法求解过程算法参数构建初始化种群解码&#xff08;二进制>十进制&#xff09;自然选择交叉变异解码&#xff08;新种群>十进制&#xff09;计算新种群的适应度 完整代码及其可视化版本其他numpy中的随机数 下面我们使用遗传算法尝试求解一元函数的最值 y s…

python遗传算法解决分段线性约束问题

问题描述 模型 分析 带有分段约束和max最值&#xff0c;导致使用一般的线性规划pulp问题进行求解会比较麻烦如果将分段约束转化为0/1整数规划&#xff0c;其余变量 u i u_i ui​未必还是整数&#xff0c;就涉及混整问题相对麻烦&#xff0c;所以考虑使用遗传算法进行求解 Py…

Python 遗传算法路径规划

了却一个心愿 文章目录 目录 文章目录 前言 二、主要内容 三、使用步骤 1.将压缩包下载解压 2.读入数据 3.最终结果 前言 遗传算法&#xff08;Genetic Algorithm&#xff0c;GA&#xff09;最早是由美国的 John holland于20世纪70年代提出,该算法是根据大自然中生物体进化规律…