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

我想知道如何将 C 中的数组梳理为函数的几个参数。在我看到 Go (golang) 惊人的语法糖之后,我想到了它。


C代码:


#include <stdio.h>

#include <stdarg.h>


// assert: all args are valid ints

void 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 main


import "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...)”相同的效果?


DIEA
浏览 211回答 3
3回答

达令说

您将需要指定数组的大小。它可能如下所示:void printEach(int* values, int size){&nbsp; if(size==0)&nbsp; &nbsp; return;&nbsp; printf("%d", value[0]);&nbsp; printEach(values+1, size-1);}

猛跑小猪

您正在寻找Variadic函数,您应该查看&nbsp;stdarg.h 和 varargs.h
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go