main(int argc,char **argv)
argv为指针的指针
argc为整数
char **argv or: char *argv[ ] or: char argv[ ][ ]
main()括号内是固定的写法。
下面给出一个例子来理解这两个参数的用法:
假设程序的名称为prog,
1.当只输入prog,则由操作系统传来的参数为:
argc=1,表示只有一程序名称。
argc只有一个元素,argv[0]指向输入的程序路径及名称:./prog
2.当输入prog para_1,有一个参数,则由操作系统传来的参数为:
argc=2,表示除了程序名外还有一个参数。
argv[0]指向输入的程序路径及名称。
argv[1]指向参数para_1字符串。
3.当输入prog para_1 para_2 有2个参数,则由操作系统传来的参数为:
argc=3,表示除了程序名外还有2个参数。
argv[0]指向输入的程序路径及名称。
argv[1]指向参数para_1字符串。
argv[2]指向参数para_2字符串。
void main( int argc, char *argv[ ] )
char *argv[] : argv是一个指针数组,他的元素个数是argc,存放的是指向每一个参数的指针,他的第一个元素即argv[0]为编译生成的可执行文件名(包括路径eg:"F:/VC/Ex1/Debug/Ex1.exe"),从二个元素(argv[1])开始,是每一个参数 .
int argc 表示argv的大小,是实际参数个数+1,其中+1是因为argv[0]是编译后的可执行文件名
main()主函数
每一C 程序都必须有一main()函数, 可以根据自己的爱好把它放在程序的某
个地方。有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放
在哪个地方, 以下几点说明都是适合的。
1. main() 参数
在Turbo C2.0启动过程中, 传递main()函数三个参数: argc, argv和env。
* argc: 整数, 为传给main()的命令行参数个数。
* argv: 字符串数组。
在DOS 3.X 版本中, argv[0] 为程序运行的全路径名; 对DOS 3.0
以下的版本, argv[0]为空串("") 。
argv[1] 为在DOS命令行中执行程序名后的第一个字符串;
argv[2] 为执行程序名后的第二个字符串;
...
argv[argc]为NULL。
*env: 字符串数组。env[] 的每一个元素都包含ENVVAR=value形式的字符
串。其中ENVVAR为环境变量如PATH或87。value 为ENVVAR的对应值如C:/DOS, C:
/TURBOC(对于PATH) 或YES(对于87)。
Turbo C2.0启动时总是把这三个参数传递给main()函数, 可以在用户程序中
说明(或不说明)它们, 如果说明了部分(或全部)参数, 它们就成为main()子程序
的局部变量。
请注意: 一旦想说明这些参数, 则必须按argc, argv, env 的顺序, 如以下
的例子:
main()
main(int argc)
main(int argc, char *argv[])
main(int argc, char *argv[], char *env[])
其中第二种情况是合法的, 但不常见, 因为在程序中很少有只用argc, 而不
用argv[]的情况。
以下提供一样例程序EXAMPLE.EXE, 演示如何在main()函数中使用三个参数:
/*program name EXAMPLE.EXE*/
#i nclude <stdio.h>
#i nclude <stdlib.h>
main(int argc, char *argv[], char *env[])
{
int i;
printf("These are the %d command- line arguments passed to
main:/n/n", argc);
for(i=0; i<=argc; i++)
printf("argv[%d]:%s/n", i, argv[i]);
printf("/nThe environment string(s)on this system are:/n/n");
for(i=0; env[i]!=NULL; i++)
printf(" env[%d]:%s/n", i, env[i]);
}
如果在DOS 提示符下, 按以下方式运行EXAMPLE.EXE:
C:/example first_argument "argument with blanks" 3 4 "last but
one" stop!
注意: 可以用双引号括起内含空格的参数, 如本例中的: " argument
with blanks"和"Last but one")。
结果是这样的:
The value of argc is 7
These are the 7 command-linearguments passed to main:
argv[0]:C:/TURBO/EXAMPLE.EXE
argv[1]:first_argument
argv[2]:argument with blanks
argv[3]:3
argv[4]:4
argv[5]:last but one
argv[6]:stop!
argv[7]:(NULL)
The environment string(s) on this system are:
env[0]: COMSPEC=C:/COMMAND.COM
env[1]: PROMPT=$P$G /*视具体设置而定*/
env[2]: PATH=C:/DOS;C:/TC /*视具体设置而定*/
应该提醒的是: 传送main() 函数的命令行参数的最大长度为128 个字符 (包
括参数间的空格), 这是由DOS 限制的。
相关推荐
C语言后记-4 int main(int argc,char **argv)的理解
经常写程序,但是未必仔细研究过main函数原型机器参数使用。 main函数百度百科:https://baike.baidu.com/item/main%E5%87%BD%E6%95%B0/6887703?fr=aladdin 经常出现的形式: int main(int argc,char** argv) int main(int argc,char* argv[]) int...
int main(int argc,char* argv[])详解
int main(int argc,char* argv[])也可以写成int main(int argc,char** argv) argc是命令行的参数个数; argv[]是字符指针数组,它的每个元素都是字符指针,指向命令行中每个参数的第一个字符。比如在linu系统下使用vim编写以下代码,并保存为sample.c。 然后用“gcc sample.c -o sample.out”编译得到sample.out后,输入“./sample.out aa bb cc”执行。 从结果argc=4可知,可执行程序也
吉林大学2016级唐班c语言期末考试B卷
` #include<stdio.h> #include<stdlib.h> //双指针法,每次从a,b中选一个最大的数,从后向前一次放在数组a中 int merge(int *a,int m,int *b,int n){ int i=m-1,j=n-1,k=m+n-1; while(i>=0&&j>=0){ if(a[i]>b[j])a[...
int main(int argc,char* argv[]) 的含义和用法
int main(int argc,char* argv[]) 的含义和用法
Zynq AXI DMA实战:5分钟搞懂S_AXIS_S2MM和M_AXIS_MM2S数据流(附Vivado配置截图)
本文通过Vivado实战配置,清晰解析了Zynq平台AXI DMA IP核中S_AXIS_S2MM和M_AXIS_MM2S数据流的核心概念与连接方法。文章重点阐述了数据流向、主从关系及接口命名规则,并提供了从ADC数据采集到DDR存储,再从DDR读取数据发送至DAC的完整双向数据流搭建指南,帮助工程师快速避坑。
面试中常考的数学题——截木棍、圆上取点、赛马、红蓝墨水,测试毒药、坐到正确座位问题
文章目录1.将一根木棒截成三段,问能够组成三角形的概率;2.在圆上任取三点,问能够组成锐角、直角、钝角三角形的概率;3.共有25匹马,找出最快的3匹,只有5个赛道,每次比赛只能得到5匹马的速度排序,最少需要多少次比赛;4 有两瓶红蓝墨水,体积一样,现在从红墨水中舀一勺加入蓝墨水中,搅拌均匀后,在从蓝墨水中舀一勺加到红墨水中,试问这两瓶墨水哪瓶纯度更高。 1.将一根木棒截成三段,问能够组成三角形的概率; 来源:https://blog.youkuaiyun.com/weixin_41245919/article/deta
c/c++:关于int main( int argc, char** argv )的含义
关于main函数 一、char** argv和char* argv[] 关于int main( int argc, char** argv )或者int main( int argc, char* argv[] ),二者效果相同,但实质不同。 char** argv:argv是个指针,指向了char* 型指针。 char* argv[ ]:argv是个数组,其中数组的每一个元素都是char*型指针...
STM32独立实现CANOpen主机功能:从零构建轻量级控制方案
本文详细介绍了如何在STM32上不依赖CanFestival库,从零构建一个轻量级的CANOpen主机方案。文章深入剖析了CANOpen主机的三大核心功能——NMT网络管理、SDO参数配置与PDO过程数据交换,并提供了从硬件准备、驱动层构建到协议实现的完整代码实战。该方案代码精简,资源占用低,特别适合在资源受限的STM32平台上实现工业控制、电机驱动等场景的稳定通信。
关于 int main(int argc,char**argv) 的解释
博主刚开始学习C++遇到的关于main()函数的都是int main()或者是void main()。第一次遇到int main(int argc,char**argv) 在此记录一下关于main()函数内参数的解释。 main()函数实际上是可以有两个参数的,argc为第一个参数必须为整型,argv是第二个形参必须是指向字符串的指针数组。 argc–命令行参数总个数(也就是在命令行输入时有多少个) argv[i]–第i个参数 argv[0]–可执行程序名 例如: 输入 abc.exe argc的值为1 a
行政数据分析大屏实战:用Tableau从Excel到看板的完整搭建流程(含数据连接与字段计算避坑)
本文详细介绍了如何利用Tableau从Excel数据源搭建行政数据分析大屏的完整流程,涵盖数据准备、连接技巧、计算字段优化、看板设计及动态交互部署。通过五阶工作流,帮助用户高效处理多源异构数据,实现业务洞察与可视化呈现,提升行政数据分析效率。
不用买显示器!用USBMMID虚拟显示器软件在Win10上扩展4个屏幕(保姆级教程)
本文提供了一份详细的保姆级教程,指导用户如何在Windows 10系统上,无需购买额外硬件,通过USBMMID虚拟显示器软件扩展出多达4个虚拟屏幕。文章深入解析了虚拟显示器的核心原理,并基于微软IDD框架,手把手教学从软件获取、环境检查到安装配置的全过程,帮助开发者和多任务用户构建高效、免费的虚拟多屏工作站,实现生产力的飞跃。
int main(int argc, char **argv)是什么意思
带形参的main函数,如 int main( int argc, char **argv ) ,是UNIX、Linux以及Mac OS操作系统中C/C++的main函数标准写法,并且是血统最纯正的main函数写法。 简单来说就是带参输入函数 ,比如让image.cpp文件对两张图像进行处理, 该如何操作? **(这里 int main( int argc, char argv )是image.cpp的主函数) 操作:将image.cpp生成image.exe文件 然后输入 "image.exe"...
Backtrader官方中文文档:第四章Concepts基本概念
官方Concepts章节:https://backtrader.com/docu/concepts/
int main(int argc,char **argv)
最近跟学校的课程学习嵌入式Linux的时候突然发现了一种没见过的main函数写法,就是带参数的main函数。之前学习C语言的时候也没进行深究,包括单片机使用时也从来没见过,今天决定好好研究一下main函数。所以单独写一篇文章作为学习笔记,方便自己复习。 ...
图像增强算法:基于Retinex的图像增强算法
该算法对图像的亮度和颜色进行分离处理,然后通过调整它们的比例来提高图像的质量。滤波后的图像将保留颜色信息,并减少图像中的噪声。接下来,Retinex算法使用一个高通滤波器对原始图像进行滤波处理,以增强图像中的亮度信息。通过使用Retinex增强算法,我们可以有效地提高图像的质量,增强图像中的细节和颜色信息。最后,Retinex算法通过将颜色恢复和亮度调整后的图像进行比例调整,以获得最终的增强图像。Retinex算法是一种常用的图像增强算法,它通过对图像的亮度和颜色进行调整,以提高图像的视觉质量。
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
int main(int argc,char *argv[]) 和 int main(int argc, char **argv)使用的几点说明
int main(int argc, char **argv)使用的几点说明 1、argc 是命令行中输入的参数的总的个数,就是总的输入参数个数的和。 2、int main(int argc,char *argv[]) = int main(int argc,char **argv)。 3、char *argv[] 是一个字符数组,其大小是int argc,主要用于表示命令...
文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况
主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。
c 语言 int argc,C语言深度学习之int main(int argc,char **argv)的理解及延申
C语言深度学习之int main(int argc,char **argv)的理解及延申前者为可接受 命令行参数,argc表示参数个数, argv[]是参数数组,其中第0个参数是程序本身的名称(包含路径)。argv[]是一个字符数组.argv[0]:指向程序的全路径名argv[1]:指向在DOS命令行中执行程序名后的第一个字符串。argv[2]:指向第二个字符串。简单的说:main(int arg...
锂电池充电器电路设计 里面有电路
锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。
温度PID控制PLC程序
温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值
理解 void main(int argc, char** argv)
理解 void main(int argc, char** argv)这个函数搞个两星号,看上去就复杂了点儿,如果改成这样就感觉熟悉的了许多void main(int argc, char* argv[ ]) void main(int argc, char* argv[ ])等同于void main(int argc, char* *argv)这行中有三个字符串分别为 cp.ex
C++ 中 int main( int argc , char** argv ) 的理解
经常对int main () 、int main ( int argc , char** argv ) 、int main ( int argc , char* argv[] ) 感到很困惑。所以总结一下自己的理解。 一、int main () 是一种对主函数的参数缺省的写法,也是我是在学习C++时主要用到的一种写法,自己也很习惯这种写法。 二、int main ( int argc ,...
C语言深度学习之int main(int argc,char **argv)的理解及延申
C语言深度学习之int main(int argc,char **argv)的理解 前者可接受 命令行参数,argc表示参数个数, argv[]是参数数组,其中第0个参数是程序本身的名称(包含路径)。 argv[]是一个字符数组. argv[0]:指向程序的全路径名 argv[1]:指向在DOS命令行中执行程序名后的第一个字符串。 argv[2]:指向第二个字符串。 说一下main(int arg...
int main(int argc,char** argv) 详解
argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数 命令行后面跟的用户输入的参数,比如: int main(int argc, char* argv[]) { int i; for (i = 0; i 这个赋值过程是编译器完成的,我们只需要读出数据就可以了。 ...
c++中int main ( int argc , char** argv )
转自:https://blog.youkuaiyun.com/Jeffxu_lib/article/details/86362344 int main () 、int main ( int argc , char** argv )、int main ( int argc , char* argv[] ) 一、int main () 是一种对主函数的参数缺省的写法,也是我是在学习C++时主要用到...
C++中 int main(int argc, char **argv) 命令行传递参数
C++中,比较常见的是不带参数的主函数int main(),如果使用命令行执行程序,主函数也可以接收预先输入的参数,形式如下。 int main(int argc,char **argv) argc:命令行参数个数(Argument Count) argv:命令行参数向量(Argument Vector) 例如,我们在命令行输入Project.exe string1 string2 st...
对于C语言中int main(int argc,char **argv)的理解
前者可接受 命令行参数,argc表示参数个数, argv[]是参数数组,其中第0个参数是程序本身的名称(包含路径)。 argv[]是一个字符数组. argv[0]:指向程序的全路径名 argv[1]:指向在DOS命令行中执行程序名后的第一个字符串。 argv[2]:指向第二个字符串。 说一下main(int argc,char *argv[])函数的两个形参,第一个int
c++中int main(int argc, char** argv)参数解释(Learning Opencv3中例子)
最近开始学opencv,看见例程中一直会出现int main(int argc, char** argv)的字样来帮助判断输入参数是否有误,一番查询,大概知其一二,记录一下。说明:工具为配置了C++的Visual Studio2019。
C语言中 main(int argc, char**argv)和main(int argc, char*argv[])
谁能讲下 C语言中 main(int argc, char**argv)和main(int argc, char*argv[])的区别,什么时候用哪个 谢谢 15 *的意思是什么 **和*的区别是什么 希望深入浅出 不要用术语 int是integer的意思么? 都哪些指令第一行加int? 多谢 满意答案 资检家伟 20
4万+



被折叠的 条评论
为什么被折叠?



