在C中创建一个int数组?

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

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

我怎么样:

  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,但实际上我正在寻找可以包含可变长度数组的东西。

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

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

 #include  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]); } } 

从你的问题来看,听起来你真的想要一个包含你的数组的struct ,如:

 struct AudioData { int* vocal_data_array; unsigned int vocal_data_length; int* instrumental_data_array; unsigned int instrumental_data_length; int* mixed_audio_array; unsigned int mixed_audio_length; }; 

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

 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 } }