Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Ponteiro de Ponteiros

Neste capitulo é mostrado o seguinte código:

int numeros[5][10];

// o ponteiro copia é idêntico ao
// ponteiro numeros... ambos apontam
// para uma lista de ponteiros de inteiros
int** copia = numeros;

// as duas operações abaixo são idênticas
numeros[0][0] = 10;
copia[0][0] = 10;

Porém ao compilar o compilador da o warning de tipos de ponteiros incompatíveis, e o código não executa, alguém consegue esclarecer isso?

Obs: os comentários são copiados do arquivo da aula

2 respostas
solução!

Oi Guilherme,

Realmente tem uma diferença entre declarar int numeros[5][10] e int **, eles são realmente incompatíveis.

O funcionamento dos dois acaba sendo bem parecido, você consegue alocar matrizes nos dois casos mas na real você não tem como garantir que o seu int ** seja realmente uma matriz por isso que dá o warning na compilação.

A declaração int numeros[5][10] faz com que seja alocado um bloco sequencial de memória enquanto o int ** poderão ser alocados diferentes espaços.

Vamos dar uma revisada no texto para ficar mais claro.

Abraço!

Obrigado