На этом сайте я прочитал пример " Передача многомерных массивов в 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;
}