可变参数列表源码的剖析

首先看看main函数的参数

首先我们得知道main函数是有参数的,那么我们就来看看main函数的原型:

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

{

   program-statements

}

那么我们看到这里有三个参数

第一个参数:argc是个整形参数,表示命令行参数的个数(含第一个参数)

第二个参数:argv是个字符指针数组,每个元素是一个字符指针,指向一个字符串,这些字符串就是命令行中的没一个参数(字符串),外部输入,依赖命令行,以空格为命令,被看做一个一个的字符串,以NULL结尾。

第三个参数:envp是字符指针的数组,数组的每一个原元素是指向一个环境变量(字符串)的字符指针(左侧名称,右侧内容,路径)

每个变量都有自己特有的作用。具有全局性,由系统维护。

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

当我们在外部输入hello时 就会打印echo,world!

通过选项命令可以让其输出特定的内容

可变参数列表解析:建立在栈帧的理解上,可以参见:https://blog.csdn.net/z_juan1/article/details/80241718

想要使用可变参数有两个条件:

1:每个传入参数的类型

2.一共传进了多少参数

我们应该知道:把确定部分写在前面,不确定部分写在后面,我们用离...最近的一个确定参数来确定不确定的部分

提取可变参数的一些宏:

va_list arg:定义变量

va_start (arg,省略号前的最后一个有名字的参数):初始化

va_arg(arg,参数类型):返回这个值,在指向下一个

va_end(arg)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值