Создание массива массивов int в C?

Скажем, у меня есть прототип следующего метода:

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, я на самом деле ищут что-то, что может содержать переменную длину массивов.

Простой массив массивов и функция, показывающая, как ее передать. Я просто добавил поддельные значения в массивы, чтобы показать, что что-то было передано функции, и что я могу ее распечатать. Размер массива, 3, является просто произвольным и может быть изменен на любой размер, который вы хотите. Каждый массив может иметь разный размер (известный как зубчатый массив). Он показывает три критерия:

Инициализация, присваивание значений каждому индексу 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 } }