Execute as tarefas requeridas para cada um dos itens a seguir. Suponha que inteiros sem sinal sejam armazenados em 2 bytes, e que o endereço inicial do array esteja no local 1002500 da memória.
a) Defina um array do tipo unsigned int chamado values com cinco elementos, e inicialize os elementos para os inteiros pares de 2 a 10. Suponha que a constante simbólica SIZE tenha sido definida como 5.
b) Defina um ponteiro vPtr que aponte para um objeto do tipo unsigned int.
c) Imprima os elementos do array values usando a notação de subscrito de array. Use uma estrutura for e suponha que a variável de controle inteira i tenha sido definida.
d) Mostre duas instruções separadas que atribuam o endereço inicial do array values para a variável de ponteiro vPtr.
e) Imprima os elementos do array values usando a notação de ponteiro/deslocamento.
f) Imprima os elementos do array values usando a notação de ponteiro/deslocamento com o nome de array como ponteiro.
g) Imprima os elementos do array values subscritando o ponteiro para o array.
h) Consulte o elemento 5 do array values usando a notação de subscrito de array, a notação de ponteiro/deslocamento com o nome do array como ponteiro, a notação de ponteiro/subscrito e a notação de ponteiro/deslocamento.
i) Que endereço é referenciado por vPtr + 3? Que valor é armazenado nesse local?
j) Supondo que vPtr aponte para values[4], que endereço é referenciado por vPtr -= 4? Que valor é armazenado nesse local?
Passo 1
Fala Galera!!! Mais um exercício para treinar e ficar craque em programação. Bora analisar cada alternativas
Na letra a) vamos definir um array (unsigned int) de 5 números pares, bem simples:
unsigned int values[ SIZE ] = { 2, 4, 6, 8, 10 };
Passo 2
Na letra b) vamos escrever uma instrução que define um ponteiro (unsigned int)
unsigned int *vPtr;
Passo 3
Na letra c) a instrução imprimirá todos os elementos dos valores do array, usando a notação do subscrito do array.
for ( i = 0; i
printf( “%d ”, values[ i ] );
Passo 4
Na letra d) A instrução atribui o endereço inicial dos valores da matriz à variável de ponteiro vPtr.
1) vPtr = values;
2) vPtr = &values[ 0 ];
Passo 5
Na letra e) a instrução usa a notação de ponteiro/deslocamento para imprimir os elementos dos valores dos arrays.
for ( i = 0; i
printf( “%d”, *( vPtr + i ) );
Passo 6
Na letra f) a instrução usa a notação de ponteiro/deslocamento com o nome do array como o ponteiro para imprimir os elementos dos valores dos arrays.
for ( i = 0; i
printf( “%d”, *( values + i ) );
Passo 7
Na letra g) A instrução imprime os elementos dos valores do array, subscrevendo o ponteiro para o array
for ( i = 0; i
printf( “%d”, vPtr[ i ] );.
Passo 8
Na letra h)
Usando a notação do subscrito do array, podemos nos referir ao quinto elemento do array da seguinte forma:
values[ 4 ]
Usando a notação de ponteiro/deslocamento com o nome da matriz como ponteiro, o quinto elemento pode ser referido como:
*( values + 4 )
Usando a notação de subscrito de ponteiro, refira-se ao quinto elemento como:
vPtr[ 4 ]
Usando a notação de ponteiro/deslocamento, o quinto elemento pode ser referido como:
*( vPtr + 4 ).
Passo 9
Na letra i) os inteiros sem sinal são armazenados em 2 bytes. Portanto, vPtr +3, fornece a localização do endereço como:
1002506; 8.
O valor armazenado neste endereço é 8
Passo 10
Na letra j) value[4] aponta para os locais de endereço 1002508.
vPtr - =4 = 1002508 - 4*2 (inteiros com sinal são armazenados em 2 bytes)
=1002500
1002500 é o endereço inicial do array que aponta para o primeiro elemento ou 2. O valor armazenado neste endereço é 2
Prontinho Galera!!! Agora partiu para o próximo exercício!!!
Resposta
Desenvolvimento acima.