指针数组作main函数的形参

int main()括号中是空的或者有void,表示main函数没有参数,调用main函数时不必给出实参。这是一般程序采用的形式,实际上,在某些情况下,main函数可以有参数:

int main(int argc,char *argv[ ])

其中,argc和argv是main 函数的形参,他们是程序的“命令行参数”。argc(argument count的缩写参数个数)。argv(argument vector缩写,意思是参数向量),它是一个*char指针数组,数组中的每一个元素(其值为指针)指向命令行中的一个字符串的首字符。

注意:如果是带参数的main函数,其第一个形参必须是int型,用来接收形参个数,第二个参数必须是字符指针数组,用来接收从操作系统命令行传来的字符串中首字符的地址。

通常main函数和其它函数组成一个文件模块,有一个文件名。对于这个文件进行编译和连接,得到可执行文件(后缀为.exe)。用户执行这个可执行文件,操作系统就调用main函数,然后main函数调用其他函数,从而完成程序的功能。

main函数时操作系统调用的,实参只能由操作系统给出。在操作命令状态下,实参是和执行文件的命令一起给出的。例如DOS,UNIX或者Linux等系统的操作命令状态下,在命令行中包括了命令名和需要传给main函数的参数。

命令行的一般形式为

命令名 参数1 参数2...参数n

命令名和各参数之间用空格分隔。命令名是可执行文件名(此文件包含main函数),假设可执行文件名为file.exe,今想将两个字符串"China","Beijing "作为传送给main函数的参数。命令行可以写成以下形式:

file1 China Beijing

file1是可执行文件名,China和Beijing是调用main函数的实参。实际上,文件名应该包括盘符、路径,今为简化起见,用file1来代表。

请注意以上参数与main函数中形参的关系。main函数中形参argc是指命令行中参数的个数(注意,文件名也作为一个参数。例如,本例中“file1”也算一个参数),现在,argc的值等于3(有3个命令行参数: file1,China,Beijing)。 main 函数的第2个形参argv是_一个指向字符串的指针数组,也就是说,带参数的main函数原型是:

int main(int argc,char *argv[ ]);

命令行参数必须都是字符串(例如,上面命令行中的" file1" ," China”,"Beijing"都是字符串),这些字符串的首地址构成一 个指针数组。

指针数组argv中的元素argv[0]指向字符串”flel”的首字符(或者说argv[0]的值是字符串file1”的首地址),argv[1]指向字符串"China"的首字符,argv[2]指向字符串"Beijing"的首字符。

#include<stdio.h>
#include<stdlib.h>

int main(int argc,char *argv[])
{
	while (argc>1)
	{
	++argv;
	printf("%s\n",*argv);
	--argc;
	}
    system("pause");
    return 0;
}

在Visual C++环境下对程序编译和连接后,选择“工程”——>“设置”——>“调试”——>“程序变量”命令,输入“China Beijing”,再运行程序,将会输出以下信息:

China

Beijing

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值