Я прочитал пример на «Passing multi-dimensional arrays in C» на этом сайте.Передача динамически распределенных целых массивов в C
Это отличный пример использования массивов символов, и я многому научился у него. Я хотел бы сделать то же самое, создав функцию для обработки динамически распределенного одномерного целочисленного массива, а затем создаст еще одну функцию для обработки многомерного целочисленного массива. Я знаю, как это сделать как возвращаемое значение функции. Но в этом приложении мне нужно сделать это в списке аргументов функции.
Как и в приведенном выше примере, я хотел бы передать указатель на целочисленный массив функции, а также количество элементов «num» (или «row» и «col» для 2D-массива функция и т. д.). Я получил переработанную версию другого примера здесь, но я не могу заставить это работать, попробуйте, как я могу (строки кода, которые являются новыми или изменены из этого примера, отмечены). Кто-нибудь знает, как это решить?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ELEMENTS 5
void make(char **array, int **arrayInt, int *array_size) {
int i;
char *t = "Hello, World!";
int s = 10; // new
array = malloc(ELEMENTS * sizeof(char *));
*arrayInt = malloc(ELEMENTS * sizeof(int *)); // new
for (i = 0; i < ELEMENTS; ++i) {
array[i] = malloc(strlen(t) + 1 * sizeof(char));
array[i] = StrDup(t);
arrayInt[i] = malloc(sizeof(int)); // new
*arrayInt[i] = i * s; // new
}
}
int main(int argc, char **argv) {
char **array;
int *arrayInt1D; // new
int size;
int i;
make(array, &arrayInt1D, &size); // mod
for (i = 0; i < size; ++i) {
printf("%s and %d\n", array[i], arrayInt1D[i]); // mod
}
return 0;
}
Возможно, вам не следует начинать с нерабочего примера из вопроса, а скорее из рабочего ответа. – sth