我想知道如何將 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);
}
- 3 回答
- 0 關注
- 256 瀏覽
添加回答
舉報
0/150
提交
取消