为了账号安全,请及时绑定邮箱和手机立即绑定

如何将数组作为参数列表传递给 C 中具有不同数量参数的函数

如何将数组作为参数列表传递给 C 中具有不同数量参数的函数

Go
DIEA 2021-09-10 10:38:58
我想知道如何将 C 中的数组梳理为函数的几个参数。在我看到 Go (golang) 惊人的语法糖之后,我想到了它。C代码:#include <stdio.h>#include <stdarg.h>// assert: all args are valid intsvoid printEach(int len, ...) {        // Irrelevant, this function print their arguments        // And I know how to use va_start, va_arg...}void handleVet(int* v, int n) {   // **HERE is my the question!!!**   printEach(n, v[0]...[n]) // <----------- NON-C code. I need it.}int main(void) {    int v[] = {12,14,15,15};    //I can do that only because the vector is static. I know the len when I'm coding        printEach(4, v[0],v[1],v[2],v[3]);    // But if we imagine an arbitrary vector, we got a problem        handleVet(v, 4);    return 0;}举例来说,在 go 中,它将是:package mainimport "fmt"func printEach (v ...int64) {    // Irrelevant, this function print their arguments}func main() {    var arr []int64 = []int64{1,14,15,}    printEach(arr...)}如何在 C 中实现与“printEach(arr...)”相同的效果?
查看完整描述

3 回答

?
达令说

TA贡献1821条经验 获得超6个赞

您将需要指定数组的大小。它可能如下所示:


void printEach(int* values, int size)

{

  if(size==0)

    return;

  printf("%d", value[0]);

  printEach(values+1, size-1);

}


查看完整回答
反对 回复 2021-09-10
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

您正在寻找Variadic函数,您应该查看 stdarg.h 和 varargs.h


查看完整回答
反对 回复 2021-09-10
  • 3 回答
  • 0 关注
  • 203 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信