Я пытаюсь выделить память в матрицу в функции и затем распечатать ее значения.Проблемы с распределением памяти для матрицы в c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void cria_ilhas(int** ilhas, int n){
int i, p;
ilhas = (int**) malloc(n*sizeof(int*));
for (i=0;i<n;i++){
ilhas[i] = (int*) malloc(n*sizeof(int));
for (p=0; p<n; p++)
ilhas[i][p] = 4;
}
printf("value %d\n",ilhas[0][0]);
}
void main(){
int n=5, i, j;
int **ilhas;
cria_ilhas(ilhas, n);
for(i=0; i<n; i++){
for(j=0;j<n;j++){
printf("%d ",ilhas[i][j]);
}
printf("\n");
}
}
Но это выход:
value 4
Segmentation fault
Почему у меня возникают ошибки сегментации?
Как использовать memset в этом виде матрицы?
Это не матрица, а массив указателя на (массив) int. Обратите внимание, что вы не должны указывать результат «malloc' & friends. C не C++! – Olaf
Игла в функции не совпадает с символом 'ilhas' в' main'. Поместите 'printf («% p \ n », ilhas)' в конце функции и перед/после вызова функции в 'main'. – user3386109
Ну, я думаю, что в основном все матрицы представляют собой массив указателей на массивы типов значений. – 648trindade