C语言不定参数作为数组怎么传给另外一个函数?

查看:428
本文介绍了C语言不定参数作为数组怎么传给另外一个函数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我的第一个函数是这样的
int execl(const char path, const char arg, ...);
第二个是这样的
int execv(const char path, char const argv[]);

解决方案

第一个参数是很重要的。因为无论是可变参数的第一个函数,还是第二个传首地址的函数。
都必须知道参数具体的个数才能正常工作。
所以你的第二个函数必须能提供这样的信息,就像printf的格式化字符串或者main函数的第一个int argn参数传递数量。
比如这样

int execv(const char path, const char arginfo, char const argv[]);

int execv(const char path, const int argn, char const argv[]);

然后你就可以在第一个函数里得到或计算出参数的数量argn。
malloc(n*参数大小)
动态分配一个数组,向里面逐个填写可变参数的值。
然后再调用第二个函数,同时把个数信息和数组首地址给它。
不要以为第二个函数里你sizeof argv就可以知道正确的个数了。

这篇关于C语言不定参数作为数组怎么传给另外一个函数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆