在C中创建一个int数组数组?

Eri*_*tto 5 c arrays multidimensional-array

让我们说我有以下方法原型:

void mix_audio(int *vocal_data_array, int *instrumental_data_array, int *mixed_audio_array, FOURTH ARGUMENT)
{


}
Run Code Online (Sandbox Code Playgroud)

我怎么会:

  1. 在上面的参数之前初始化一个array_of_arrays,以便将它作为第四个参数传递?

  2. 在方法中,使我的array_of_arrays的第一个值是名为vocal_data的数组,我的数组的第二个值是instrumental_data_array,第三个值是mixed_audio_array.

  3. 之后我将如何循环遍历array_of_arrays中第一个数组的所有值.

我希望我在这里不要求太多.我只是觉得有人可以很快吐出来的语法很简单:)

谢谢!


编辑1

请注意,尽管我已经通过我的示例展示了一个长度为3的array_of_arrays,但实际上我正在寻找可以包含可变长度数组的东西.

jmq*_*jmq 9

简单的数组数组和一个显示如何传递它的函数.我刚刚在数组中添加了假值,以显示某些内容已传递给该函数,并且我可以将其打印出来.数组的大小3只是任意的,可以更改为您想要的任何大小.每个阵列可以具有不同的大小(称为锯齿状阵列).它显示了您的三个标准:

初始化,为每个索引赋值arrayOfArrays.该函数演示了如何从数组数组中提取数据

#include <stdio.h>

void mix_audio(int *arr[3]);

int main() {
  int *arrayOfArrays[3];

  int vocal[3] = {1,2,3};
  int instrumental[3] = {4,5,6};
  int mixed_audio[3] = {7,8,9};

  arrayOfArrays[0] = vocal;
  arrayOfArrays[1] = instrumental;
  arrayOfArrays[2] = mixed_audio;

  mix_audio(arrayOfArrays);

  return(0);
}

void mix_audio(int *arr[3]) {
  int i;
  int *vocal = arr[0];
  int *instrumental = arr[1];
  int *mixed_audio = arr[2];

  for (i=0; i<3; i++) {
    printf("vocal        = %d\n", vocal[i]);
  }
  for (i=0; i<3; i++) {
    printf("instrumental = %d\n", instrumental[i]);
  }
  for (i=0; i<3; i++) {
    printf("mixed_audio  = %d\n", mixed_audio[i]);
  }
}
Run Code Online (Sandbox Code Playgroud)


hen*_*nes 1

对于使用整数数组示例的数组分配:

int** x = malloc (sizeof (int*) * rows);
if (! x) {
    // Error
}

for (int i = 0; i < rows; ++i) {
    x[i] = malloc (sizeof (int) * columns);
    if (! x[i]) {
        // Error
    }
}
Run Code Online (Sandbox Code Playgroud)