Ir ao conteúdo

ajuda com ponteiro de struct


Big Mike

Posts recomendados

Postado

bom dia pessoal, meu professor está começando um novo assunto em linguagem C, struct, ai ele colocou um programinha que eu não estou conseguindo entender, com ponteiro...

alguém pode comentar algumas linhas específicas?

abaixo o código:


#include <stdio.h>
typedef struct{
int a;
float b;
} FooStruct;

FooStruct fooFunction (FooStruct s1, FooStruct* s2){
s1.a *= 2;
s1.b /= 2;
s2->a *= 2;
s2->b /=2;
return (s1);
}
int main (){
FooStruct s1, s2, s3;
s1.a = 10;
s1.b = 20.4;
s2.a = 30;
s2.b = 14.4;
s3 = fooFunction (s2, &s1);
printf ("%d %.2f\n%d %.2f\n%d %.2f\n",
s1.a, s1.b, s2.a, s2.b, s3.a, s3.;
return (0);
}

pelo meu teste de mesa, imprimiria:

20 10,20

60 7,20

20 10,20

mas está errado, o problema está em

s2->a *= 2;

s2->b /=2;

como é isso eu não entendi?

alguém pode ajudar?

se possível executar o teste de mesa pra eu entender...

desde já agradeço...

att Big Mike

Postado

Como em main() s2.a e s2.b são passadas como valor para a função, não são alteradas...

No trecho abaixo a variável passada como ponteiro está sendo alterada na função.


s2->a *= 2;
s2->b /=2;

Supondo que em FooStruct s1, o endereço de si seja 100.

Na função seria o mesmo que.


100->a *= 2;
100->b /=2;

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...