Кто-нибудь может объяснить, почему вывод этого кода равен 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;
Это - вероятно, неправильный сайт для задавания таких вопросов. Тем не менее, вот ответ: *address
указывает array[0]
, который Вы заполняете 2. Затем Вы помещаете содержание address
, который является array[0]=2
в массив [2], и распечатайте его. В результате Вы добираетесь 2.
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/