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.