Encontre o erro em cada um dos segmentos de programa a seguir. Considere
int *zPtr; /* zPtr referenciará o array z */
int *aPtr = NULL;
void *sPtr = NULL;
int number, i;
int z[ 5 ] = { 1, 2, 3, 4, 5 };
sPtr = z;
a) ++zptr;
b) /* usa o ponteiro para obter o primeiro valor do array; suponha que zPtr seja inicializado */number = zPtr;
c) /* atribui o elemento do array 2 (o valor 3) a number;suponha que zPtr seja inicializado */number = *zPtr [ 2 ];
d) /* imprime array z inteiro; suponha que zPtr seja inicializado */ for ( i = 0; i
e) /* atribui o valor apontado por sPtr a number */number = *sPtr;
f) ++z;
Passo 1
Fala Galera!!! Mais um exercício para treinar e ficar craque em programação. Bora analisar cada alternativas
Na letra a) o erro está no zPtr que não foi inicializado. Para corrigir é preciso fazer a inicialização do zPtr = z; amtes de realizar a aritmética de ponteiro.
Passo 2
Na letra b) o erro é o fato de o ponteiro não estar desreferenciado. Para corrigir é preciso mudar a instrução para number = *zPtr;
Passo 3
Na letra c) o erro está no zPtr[2] que não é um ponteiro e não deve ser desreferenciado. Para corrigir é preciso alterar *zPtr[2] para zPtr[2]
Passo 4
Na letra d) o erro é referir-se a um elemento do array fora dos limites do array com subscrito de ponteiro. Para corrigir é preciso mudar o operador
Passo 5
Na letra e) o erro é desreferenciar um ponteiro void. Para corrigr é preciso desreferenciar o ponteiro, ele primeiro precisa ser convertido para um ponteiro inteiro. Logo, é preciso mudar a instrução para number = *(( int*) sPtr);
Passo 6
Na letra f) o erro é tentar modificar um nome de array com aritmética de ponteiro. Para corrigir use uma variável de ponteiro em vez do nome do array para realizar a aritmética de ponteiro, ou crie um subscrito do nome do array para se referir a um elemento específico.
Prontinho Galera!!! Agora partiu para o próximo exercício!!!
Resposta
Desenvolvimento acima.