Suponha o seguinte esquema que corresponde à declaração que se segue:

Char s[] = “Maria” ,*ptr = s;

Complete a próxima tabela, colocando expressões que dão como resultado o conteúdo da coluna Valor.

Passo 1

Fala aí! Essa aqui é só pra garantir que você tá manjando de como é o funcionamento de ponteiros. Vou explicar resumidamente ao longo da resolução, bora comigo.

Pra começar, foi declarada a string s “Maria” e a ela foi associado o ponteiro ptr. Se quisermos acessar o valor armazenado na segunda posição de s, podemos utilizar a notação s[i], que nos leva justamente ao valor armazenado na posição de índice i. Ou então usamos a notação equivalente para ponteiros: quando escrevemos *ptr, queremos dizer “o valor apontado pelo ponteiro ptr”. Como foi definido *ptr = s, podemos simplesmente escrever ptr[i] ou ainda *(ptr + i).

A primeira linha da tabela fica, então, da seguinte forma:

Passo 2

Seguindo em frente, agora queremos não mais o valor armazenado em certo endereço, queremos o próprio endereço. Para isso, podemos utilizar o operador &, que significa “endereço de”. Assim, podemos escrever &s[i] para as linhas 2 e 3. Para a notação com ponteiros, usamos simplesmente ptr+i para nos referir ao endereço da posição i. Nossa tabela vai ficar assim:

Passo 3

Agora, para o último caso, temos que tomar certo cuidado. Olha só, o endereço 5000 encontra-se depois do caractere \0, certo? Como sabemos, qualquer valor depois do caractere delimitador é considerado lixo e não é considerado pela string. Assim, não conseguimos acessá-lo com a notação s, mas ainda podemos fazê-lo utilizando ponteiros, por meio do caractere &, pois aquele é o endereço em que o próprio ponteiro fica armazenado.

Resposta