Функция dynamicRandomMatrix должна возвращать указатель на массив из n указателей, каждый из которых указывает на массив из n случайных целых чисел.
Я получил его для печати в основном правильно, за исключением первого числа в массиве. Это вывод:
n=3: -2084546528, 59, 45
Может кто-нибудь помочь мне понять, почему первое число в массиве так мало? Я думаю, что это должно быть что-то делать с локальными переменными и доступа или что-то, но я не уверен.
int** dynamicRandomMatrix(int n){
int **ptr;
ptr = malloc(sizeof(int) * n);
for (int i = 0; i < n; i++) {
int *address = randomArray(n);
ptr[i] = address;
}
return ptr;
free (ptr);
}
int* randomArray(int n){
int *arr;
arr = malloc(sizeof(int) * n);
for (int i = 0; i < n; i++) {
int num = (rand() % (100 - 1 + 1)) + 1;
arr[i] = num;
}
return arr;
free(arr);
}
int main(){
int **ptr;
int i;
ptr = dynamicRandomMatrix(3);
printf("n=3: ");
for (i = 0; i < 3; i++) {
printf("%d, ", *ptr[i]);
}
return 0;
}