Dúvida em C

1. Dúvida em C

uberdam cavaletti
berdam

(usa CentOS)

Enviado em 28/03/2013 - 23:10h

Olá a todos.

Pessoal, tenho esse fonte

int getanswer(int *e, int b, int *c){
b = *(++c);
*e = b;
(*c)--;
return b;
}
int main(void){
int a = 2, b = 4, c[] = {8, 16};
getanswer(&a, b, c);
printf("%d, %d, %d, %d", a, b, c[0], c[1]);
return 0;
}

Alguém se possível poderia dar uma explicação nele, já que caiu numa prova que fiz e acabei não entendendo a questão ??

Obrigado



  


2. Re: Dúvida em C

Perfil removido
removido

(usa Nenhuma)

Enviado em 28/03/2013 - 23:54h

berdam escreveu:

Olá a todos.

Pessoal, tenho esse fonte

int getanswer(int *e, int b, int *c){
b = *(++c);
*e = b;
(*c)--;
return b;
}
int main(void){
int a = 2, b = 4, c[] = {8, 16};
getanswer(&a, b, c);
printf("%d, %d, %d, %d", a, b, c[0], c[1]);
return 0;
}

Alguém se possível poderia dar uma explicação nele, já que caiu numa prova que fiz e acabei não entendendo a questão ??

Obrigado


int getanswer(int *e, int b, int *c){  // recebe dois ponteiros e um inteiro que não altera variável externa e retorna um valor
b = *(++c); // pega o valor em uma posição de memória à frente da indicada por c. Se c for a posição N de um vetor, ele pega o valor da posição N+1. Inclusive apontará prá essa posição
*e = b; // passa por referência o valor de b para o endereço apontado por 'e'
(*c)--; // ao invés de mudar a posição de memória, ele muda o valor da posição. Decrementa em 1
return b;
}

int main(void){
int a = 2, b = 4, c[] = {8, 16};
getanswer(&a, b, c); // retorna 4
printf("%d, %d, %d, %d", a, b, c[0], c[1]); // a=16, b=4, c[0]=8, c[1]=15
return 0;
}


O código é confuso. Tá parecendo que é isso aí e nem tenho certeza. Coisa medonha!


3. Re: Dúvida em C

uberdam cavaletti
berdam

(usa CentOS)

Enviado em 29/03/2013 - 09:17h

Isso era a pergunta de um concurso que fiz. Programei em Delphi e dou umas arranhadas em Java, mas C fica complicado. Tentando entender isso ainda. Valeu pela resposta.


4. Re: Dúvida em C

uberdam cavaletti
berdam

(usa CentOS)

Enviado em 29/03/2013 - 22:25h

Realmente nobre colega ,a resposta é essa mesmo. Mas eita código difícil isso. o Carinha ali não leu Código Limpo não.


5. Re: Dúvida em C

Perfil removido
removido

(usa Nenhuma)

Enviado em 29/03/2013 - 22:49h

Tem um campeonato entre programadores no exterior em que ganha quem fizer o código mais ilegível, incompreensível, conciso, absurdo etc.

Aquele cara que criou o Perl ganhou por três anos seguidos ao menos.

( Depois ele deve ter enjoado e resolveu inventar alguma coisa mais difícil de se ler :) )

Mas não sei se os campeonatos foram antes ou depois do Perl.








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts