Ir ao conteúdo

C exercicio em c - impressão do código 2


Ir à solução Resolvido por devair1010,

Posts recomendados

Postado

Não consigo entender o que será impresso pelo programa abaixo:


#include <stdio.h>
int main()
{ 
 int a, b, c;
 int *ptr1, *ptr2;
 
 a = 9;
 ptr1 = &a;
 ptr2 = &b;
 c = 7;
 *ptr2 = *ptr1 + c;
 
 printf("a = %d\n", a);
 printf("b = %d\n", b);
 printf("c = %d\n", c);
 
 ptr1 = ptr2;
 *ptr1 = 2;
 ptr2 = &c;
 b = a + *ptr1;
 
 printf("a = %d\n", a);
 printf("b = %d\n", b);
 printf("c = %d\n", c);
 
 return 0;

Coloquei ele pra rodar e o programa rodou isso:

image.thumb.png.d1f2a5a4d2b3d7c71a9829915720f310.png

Com isso eu não entendi direito o que ele roda afinal. Qual a explicação pra esse código?

  • Triste 1
  • Solução
Postado

@Loris_mini    a variável a recebe  valor 9 e a variável c o valor 7  e ponteiro ptr1 recebe o endereço da variável a , e  ptr2 recebe o valor de ptr1 mais o valor da variável c , e a soma é igual a  16 , e nesses primeiros três printf   ele escreve os valores dessas três variáveis  a  b  c   ,  como o valor de a e c não foram modificados , eles se mantém os mesmos , mas o b foi modificado pois alterou o valor de ptr2 ,  que do modo que está , eles partilham o mesmo endereço de memória ,  e ao modificar um , modifica o outro , e assim , para a variável b ele escreve o valor 16 ,  e continuando , os outros três printf , são nesse mesmo formato .

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...