Ir ao conteúdo
  • Cadastre-se

Alocação dinamica de matrizes


thiagorsousa

Posts recomendados

Boa noite galera,

tenho uma matriz alocada dinamicamente. Como faço para recebe-la em uma função?

Nao consigo alocar com o tamanho sendo pedido ao usuário!

alocada aqui:

void le_matriz(int matriz[?[?], int **v){

int i, j;

for(i=0; i<**v; i++){

    for(j=0; j<**v; j++){

         scanf("%d", &matriz[i[j]);

}

}

}

int main(){

int **v, matriz[?[?];
   int n, i, v;
   scanf ("%d", &n);
   v = (int **) malloc(n * sizeof (int*));
   for (i = 0; i < n; i++){
    v = (int *) malloc(n * sizeof (int));
  }

le_matriz(matriz, **v);

Link para o comentário
Compartilhar em outros sites

Esta seria a forma correta:
 

#include<stdio.h>
#include <stdlib.h>

void le_matriz (int **m, int tamanho ) {
    int i, j;
    for ( i = 0; i < tamanho; i++ ) {
        for ( j = 0; j < tamanho; j++ ) {
            printf( "%03d, ", m[i][j] );
        }
        printf("\n");
    }
    
}

int main() {
    int **v;
    int tamanho, i, j;
    
    tamanho = 10; // pedir o tamanho com scanf
    
    v = ( int ** ) malloc ( tamanho * sizeof ( int* ) );
    for ( i = 0; i < tamanho; i++ ) {
        v[i] = ( int * ) malloc ( tamanho * sizeof ( int ) );
    }
    
    //zerando tudo
    for ( i = 0; i < tamanho; i++ ) {
        for ( j = 0; j < tamanho; j++ ) {
            v[i][j] = 0;
        }
        
    }
    v[0][0]=1;
    v[9][9]=100;
    
    le_matriz ( v, tamanho );
    
    for ( i = 0; i < tamanho; i++ ) {
        free(v[i]);
    }    
    free(v);
    return 0;
}

você só tem que passar a v sem os ** pois v já é considerado como um ponteiro, v guarda a direção do inicio da matriz, então não precisamos por & adiante.

Um ponteiro guarda o quê? Um numero que corresponde a direção de memória de outra variável. Quando se trata de outro tipo de dado como um int, devemos por & adiante dessa variável, pois queremos extrair sua direção, porém os ponteiros já guardam direções, não valores, então não precisamos por & adiante. falou?
Procure se afinar mais na teoria de ponteiros. E procure também "ponteiros e vetores" no google.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...