【转载】Linux C语言:main函数的命令行传参

原文地址:Linux C语言:main函数的命令行传参

https://www.tomorrow.wiki/


【转载目的】

真的非常感谢这位博主,解决了我一个大问题!!!


在大学里面,老师一般会这样教,定义main 函数应该是这样的:

Linux C 语言:main 函数的命令行传参

甚至是这样的:

Linux C 语言:main 函数的命令行传参

但是其实在 Linux 下,一个正确的main 函数应该被定义为如下:

Linux C 语言:main 函数的命令行传参

大家可以看到,main 函数中有两个参数,分别是 argc 和 argv。但是在 C 语言中规定,main 函数是不能被别的函数调用的,那究竟是谁传递了参数给main 函数呢?

答案是:命令行

当我们在命令执行程序时,其实就是在给main 函数传递参数,其中 argc 的全称是 argument count,即命令行的参数的数目。 argv 的全称是 argument value,即命令行的参数对应的值。

我们先来研究一下这个 argc 吧,注意,这个 argc 指的不是额外的参数,而是包含执行文件在内的参数个数。举个例子吧,假设有程序如下:

Linux C 语言:main 函数的命令行传参

执行程序结果:

Linux C 语言:main 函数的命令行传参

命令行的参数是以空格分开,大家可以看到,argc 就是参数个数,包含执行的文件在内。

那么再来看看这个 argv,类型是 char *[],如果有一定 C 语言功底的同学应该知道,这个是一个字符指针数组,通俗一点来讲,就是一个数组名字叫 argv,并且数组中放着很多个字符串:

Linux C 语言:main 函数的命令行传参

那么究竟是谁放在里面呢?没错,就是命令参数的值,以上面的实例为例子

gec@ubuntu:~$ ./example one two three 代表当前有 4 个参数,那么 argv 的数组中就应该是这样的:

那么数组访问每个成员,我们在大学里面已经学习过了,使用下标就可以访问:argv[0]为数组第一个成员,argv[1]为数组第二个成员,如此类推。

那么接下来写个程序验证一下:

Linux C 语言:main 函数的命令行传参

执行的结果:

Linux C 语言:main 函数的命令行传参

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值