Вопрос для новичков в программировании на C [закрыт]

Кто-нибудь может объяснить, почему вывод этого кода равен 2? Я ошибочно подумал, что это было 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;
0
задан 16 July 2014 в 07:47

2 ответа

Это - вероятно, неправильный сайт для задавания таких вопросов. Тем не менее, вот ответ: *address указывает array[0], который Вы заполняете 2. Затем Вы помещаете содержание address, который является array[0]=2 в массив [2], и распечатайте его. В результате Вы добираетесь 2.

5
ответ дан 16 July 2014 в 07:47
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;

Отправьте свой следующий qestions, связанный с c и программирующий в сообществе https: потока Stackover//stackoverflow.com/

3
ответ дан 16 July 2014 в 07:47

Другие вопросы по тегам:

Похожие вопросы: