C语言主函数参数

前言:

今天来用直白的话讲一讲主函数参数是个啥

上课的时候 总是见老师mian主函数里面有两个不知道是什么东西的参数 感觉很好奇 因为平时自己都是写成无参数的 而且网上大部分的C语言教程都不会提到这个东西

int main()
{

	return 0;
}

但是老师的那种却是这样的

# include <stdio.h>

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

	return 0;
}

这两个参数是什么玩意???

第一个 argc 是 argument count的缩写 意思是参数数量

第二个 argv 是argument value的缩写 意思是参数值

可是这样一说 那不是更懵逼了?别急 让我们先认识一下他们两个参数是干啥子的

我们先讲讲计算机命令行是啥东西 同时点击win+r键 就会出现一个运行框框

 

然后输入cmd 就会弹出一个黑框框 这个就是命令行

 

我们输入ping.exe并回车

命令行会显示ping的各种用法和参数

ping这个可执行文件用于向目标主机发送一个网络请求

目标主机如果收到该请求将返回一个回应 通常用于测试网络是否正常(当然 你可以不用理解 只要知道ping是一个可以执行的程序就行)

我们输入ping baidu.com并回车

 这些数字说明我们与目标主机baidu.com链接通畅(你不是校园网应该比我还快)

将这个有什么用?

我们想一想 不同的目标和主机名和选项 是如何传递到程序当中的呢?

如果回想一下我们学过的知识 那就是用scanf函数输入数据

我们要运行scanf函数 就必须先运行程序 等待程序执行到输入函数的时候才会输入数据

但是 我们用命令行的时候 还没有启动程序就先输入了数据 baidu.com

可见这种传入数据的方式原理和scanf完全不一样

这时 我们传入的参数直接被传递到主函数参数中 (终于点题了)

主函数参数定义

常用写法:

# include <stdio.h>

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

	return 0;
}

参数名可以自定义,但是惯例我们是使用argcargv 分别表示参数数量参数值

比如我们输入 ping baidu.com

此时参数数量argc为2 分别为ping和baidu.com两个

char**argv指向char*数组的首元素

这里*argv->ping *(argv+1)->baidu.com或是argv[0]->ping   argv[1]->baidu.com

实践

接下来我们自己写一个程序 尝试使用主函数参数

# include <stdio.h>

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

先编译程序 保存程序名为ceshi

 编译成功后 编译器下方会显示文件所在目录

我们打开命令行 输入ceshi.exe运行程序

  欸~神奇地发现 居然没办法运行 这是因为ceshi.exe这个程序不在系统的可执行文件搜索目录当中

我们得输入完整路径(或相对路径) 比如我这里就是C:\Users\20848\Documents\ceshi.exe

输入了如下内容 第一行表示参数个数1,第二行表示字符串参数 为刚才输入的绝对路径

我们再多加几个字符串参数试试看

 我们可以看到输出如下:参数个数为4 字符串依次为绝对路径 i ,am,chuizi

 总结:上面那么多都是在讲主函数参数的使用方法 实际上大多数人用win系统都不会用到命令行 编程比赛的时候就更不会了 不过主函数参数在以后学习linux系统中将会大放异彩 我们目前只要能知道两个参数的意义就可以应对考试了

练习题

27 . 单选题 简单 4分

关于主函数的形式参数,下列说法正确的是( )。

A.

是在程序编译时获得实际值

B.

不可以由用户自己定义名字

C.

类型可以是实型

D.

可以有两个

选D

解析

main函数的参数argv[argc]是一个空指针。如果argc大于1,则argv[0]是一个指向程序名的字符串指针,argv[1]~argv[argc-1]是指向命令行参数的字符串指针。

刚才我也运行了一遍 如果参数个数为1 那么argv指向的就是一个程序名字(路径)字符串

28 . 单选题 中等 4分

不合法的main函数形式参数表示是( )。

A.

main(int a,char *c[])

B.

main(int arc,char **arv)

C.

main(int argc,char *argv)

D.

main(int argv,char *argc[])

C 不用多解释了 注意char *argc[]==char **argc

 

 

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C语言中,主函数的输入参数argv是一个字符指针数组,用于传递命令行输入的参数列表。每一个数组元素都是一个字符指针,指向一个字符串,表示一个命令行参数参数个数则通过另一个参数argc来表示。\[1\] 下面是一个示例代码,展示了如何在主函数中使用argv参数: ```c #include <stdio.h> int main(int argc, char *argv\[\]) { int i; for (i = 0; i < argc; i++) { printf("%s\n", argv\[i\]); } return 0; } ``` 在这个示例中,通过循环遍历argv数组,可以逐个打印出命令行输入的参数。其中,argv\[0\]表示程序的名称,而argv\[1\]、argv\[2\]等则表示传递的具体参数。\[2\] 除了argv参数,还有一个可选的参数envp,它是一个字符指针数组,用于传递环境变量。可以通过循环遍历envp数组来打印出所有的环境变量。\[3\] #### 引用[.reference_title] - *1* [C语言主函数参数](https://blog.csdn.net/m0_50683929/article/details/118925926)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [C语言主函数参数|输出缓冲区问题](https://blog.csdn.net/Serendipity_00/article/details/121594720)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr丶锤子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值