C语言中main函数两个参数的作用

 更新时间:2023年09月20日 14:36:18   作者:西岸贤  
这篇文章主要介绍了C语言中main函数两个参数的作用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

一般我们在使用C语言时不太用到main函数自带的参数,因此最常见的main函数就像下面这样。

int main()
{
	...
	...
}

上面这种main函数是省略了其形参的,C语言中规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv,其中,第一个形参argc为整形,第二个参数argv为指向字符串的指针数组。因此,如果不省略其形参的话,真实的main函数就像下面这样定义。

int main(int argc,char **argv)
{
	...
	...
}

或者下面这样。

int main(int argc,char *argv[])
{
	...
	...
}

说清楚这两个参数的类型后,那么它们的功能是什么,或者有什么用处。先看下面一个例子。

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

写好这个C程序后,在终端使用下面的命令将其编译为可执行文件。

gcc filename.c -o filename

然后执行这个可执行文件,执行结果如下图所示。

在这里插入图片描述

可以看到,第一个参数argc就是我们在命令行输入的参数的个数,而第二个参数中argv[0]为自身运行目录的路径和程序名,因为我这里直接在该可执行文件所在的文件夹下,因此路径就是当前路径./,程序名就是这个可执行文件的名字。第一次我们只是执行了该文件,并没有传入参数,因此argv[1]就是null的,再往后,我们在./a后再加一个用户输入的参数,那么这个参数就被传到了argv[1]里面了。优化一下这个程序,代码如下。

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

这样不管我们在执行这个文件时传入多少个参数,各个参数的值都会帮我们打印出来。

在这里插入图片描述

总结一下,main函数中第一个参数(整型)就是统计我们在命令行传入的参数个数,其中,输入的各个参数之间用空格隔开。第二个参数(字符指针数组)是存放用户输入的,下标为0的存放的是可执行文件的路径及名称,大于0的下标存放的参数都是由用户输入的。这些由用户在命令行输入的值在程序里是直接可以使用的,例如argv[1]=1,然后在程序中将用户输入的这个参数通过write函数写入,那么它就可以控制某个设备打开或者关闭,大致就是这个用法。因此,合理的使用main函数中的这两个参数,可以更好的帮我们达成目的。

到此这篇关于C语言中main函数两个参数的作用的文章就介绍到这了,更多相关main函数参数的作用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 深入理解c/c++ 内存对齐

    深入理解c/c++ 内存对齐

    这篇文章主要介绍了c/c++ 内存对齐,有需要的朋友可以参考一下
    2014-01-01
  • VC创建圆角dialog的实现方法

    VC创建圆角dialog的实现方法

    这篇文章主要介绍了VC创建圆角dialog的实现方法,结合实例形式分析了圆角dialog对话框的创建步骤与相关操作技巧,需要的朋友可以参考下
    2016-08-08
  • C++实现LeetCode(84.直方图中最大的矩形)

    C++实现LeetCode(84.直方图中最大的矩形)

    这篇文章主要介绍了C++实现LeetCode(84.直方图中最大的矩形),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C++实现LeetCode(28.实现strStr()函数)

    C++实现LeetCode(28.实现strStr()函数)

    这篇文章主要介绍了C++实现LeetCode(28.实现strStr()函数),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C++实现稀疏矩阵的压缩存储实例

    C++实现稀疏矩阵的压缩存储实例

    本篇文章主要介绍了C++实现稀疏矩阵的压缩存储实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • C++中的String的常用函数用法(最新推荐)

    C++中的String的常用函数用法(最新推荐)

    这篇文章主要介绍了C++中的String的常用函数用法总结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • C++map,set,multiset,multimap详细解析

    C++map,set,multiset,multimap详细解析

    在C++标准模板库(STL)中,容器分为关联式容器和序列式容器两大类,关联式容器主要包括set、map、multiset和multimap,通过索引来访问元素,本文给大家介绍C++ map,set,multiset,multimap的相关知识,感兴趣的朋友跟随小编一起看看吧
    2024-09-09
  • C++实现循环队列

    C++实现循环队列

    这篇文章主要为大家详细介绍了C++实现循环队列,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-01-01
  • 详解C语言中不同类型的数据转换规则

    详解C语言中不同类型的数据转换规则

    这篇文章给大家讲解不同类型数据间的混合运算与类型转换,有自动类型转换和强制类型转换,针对每种转换方法小编给大家介绍的非常详细,需要的朋友参考下吧
    2021-07-07
  • Qt示例教程之用Qt画一个温度计

    Qt示例教程之用Qt画一个温度计

    在Qt绘图中经常需要绘制一些仪表的刻度盘,比如温度计,下面这篇文章主要给大家介绍了关于用Qt画一个温度计的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-03-03

最新评论