Pergunta de programação para novatos C [fechada]

0

Alguém pode explicar por que a saída desse código é 2? Eu erroneamente pensei que era 3.

int array[] = {1, 2, 3};

int *address = array;

array[0] = 2;
array[1] = array[2];
array[2] = *address;

printf("%d\n", array[2]);

return 0;
    
por jwhstman 16.07.2014 / 05:47

2 respostas

5

Este é provavelmente o site errado para fazer essas perguntas. No entanto, aqui está a resposta: *address está apontando para array[0] que você preencheu 2. Então, você coloca o conteúdo de address , que é array[0]=2 no array [2], e imprime. Como resultado, você ganha 2.

    
por noleti 16.07.2014 / 06:01
3
int array[] = {1, 2, 3};

int *address = array;      /* address storing arrays first byte address which is array[0] address*/ 

array[0] = 2;              /* array[0]=1 is overwritten to array[0]=2 */
array[1] = array[2];       /* array[1]=2 is overwritten to array[2]=3 */
array[2] = *address;       /* array[2]=3 is overwritten with element in address */

printf("%d\n", array[2]);  /* printing array[2] value which is address which is indeed array[0] value */

return 0;

Poste suas próximas perguntas relacionadas à programação em fluxo de stackover da comunidade. link

    
por Sudheer 16.07.2014 / 06:03