C语言主函数参数

前言:

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

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

int main()
{

	return 0;
}

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

# include 

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

	return 0;
}

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

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

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

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

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

C语言主函数参数_第1张图片

 

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

C语言主函数参数_第2张图片

 

我们输入ping.exe并回车

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

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

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

我们输入ping baidu.com并回车

C语言主函数参数_第3张图片

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

将这个有什么用?

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

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

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

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

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

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

主函数参数定义

常用写法:

# include 

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 

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

C语言主函数参数_第4张图片

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

C语言主函数参数_第5张图片

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

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

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

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

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

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

C语言主函数参数_第6张图片

 总结:上面那么多都是在讲主函数参数的使用方法 实际上大多数人用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

 

 

你可能感兴趣的:(C语言基础知识,c语言,c++,开发语言)