Olá, boa noite!
Tive uma dúvida sobre ponteiro de ponteiro no seguinte código:
int numeros[5][10];
int* linha0 = numeros[0];
int* linha1 = numeros[1];
int* linha2 = numeros[2];
int* linha3 = numeros[3];
int* linha4 = numeros[4];
// os numeros serao iguais, afinal
// ambos ponteiros apontam para o mesmo
// endereço de memória
printf("%d %d", linha0, numeros[0]);
'Veja que no código acima, declaramos int* para representar cada array que está dentro da matriz.'
Como um vetor é um meio de ordenar endereços de memória de maneira sequencial, não seria equivalente a representação através do código:
int numeros[5][10], *p;
p=numeros[numero de 0 a 5]
ou até mesmo p=&numeros[0 a 5][0 a 10]
? (Referenciando ao pointer unidimensional um array unidimensional (exemplo: p=numero[3]
(aponta para o array presente na linha 4), e depois definindo a coluna por p[0 a 10])
Com o (* p) dando acesso ao valor interno presente na célula referenciada, o (** variavel_qualquer) poderia manipular o valor numa célula específica ao linkar com o (* p).
Ao fazer int* linha0 = numeros[0];
, não seria análogo a dizer que * p[0 a 10])=numero[0][0 a 10]
diretamente? Se sim, se pode linkar um endereço a uma chave de acesso a esse endereço?