Olá pessoal, sou o Filipe Névola, este blog foi muito ativo durante 2009 enquanto eu fazia universidade,
hoje em dia estou ativo no Twitter @FilipeNevola e voltando a escrever posts agora no meu perfil do Medium (29/05/2016).

[ 22/07/2009 ] 5

POSCOMP 2007 Q38 - Programação - Linguagem C

Questão 38 [FU] Dado o seguinte programa escrito em C:

#include <stdio.h>

int main(void){
    int n[] = {7, 8, 9};
    int *p;
    p = &n[0];
    p++;
    printf("Valor: %d ", *p);
    (*p)++;
    printf("Valor: %d\n", *p);
}

Qual é a resposta que será impressa na tela:

a) Valor: 7 Valor : 8
b) Valor: 7 Valor: 7
c) Valor: 8 Valor: 9
d) Valor: 7 Valor: 9
e) Valor: 9 Valor: 9

Gabarito: c (Selecione o texto a esquerda para ver a resposta ou consulte o fim do post).

Explicação: As primeiras linhas de código são totalmente normais, vamos focar nas atribuições e incrementos.

Instruçao: p = &n[0];
Atribui ao ponteiro p a primeira posição do vetor n, então p aponta para n[0]. Neste momento *p vale 7.

Instruçao: p++;
Incrementa a posição do ponteiro, ou seja, ele agora aponta para n[1]. Neste momento *p vale 8.

Instrução: printf("Valor: %d ", *p);
Imprime o conteúdo da posição de memória que p está apontando (n[1]), ou seja, imprime 8.

Instruçao: (*p)++;
Incrementa o conteúdo da posição apontada pelo ponteiro p, ou seja, ele agora aponta para n[1] e n[1] vale 9. Neste momento *p vale 9.

Instrução: printf("Valor: %d\n", *p);
Imprime o conteúdo da posição de memória que p está apontando (n[1]), ou seja, imprime 9.

Então teremos como saída 8 e depois 9.

Não concorda? 
Comente, opine e demonstre seu conhecimento!

Gabarito: c
Jhonatan zooooi comentou:

questao interessante..
e eu ia acertar, kkkkkk
obrigacao tb --'

Filipe Névola comentou:

@Jhonatan zooooi, é bem fácil esta questão, comecei colocando as mais simples e depois vou ir colocando as mais complexas! Acompanhe!

Adriano comentou:

Olá Felipe,
Na parte onde você afirmou eles receberem o valor 9 eles deveriam estar referentes a n[2] ao invés de n[1].

Filipe Névola comentou:

@Adriano, amigo olhe com mais atenção: foi incrementado (*p)++, logo continua em n[1] e aumenta seu CONTEÚDO em uma unidade! Correto?

Elis comentou:

Eu prefiro a linguangem C,me indentifico mais com ela

Novo Comentário