Нужно объяснение для вывода "Put" в C - PullRequest
0 голосов
/ 30 сентября 2018

Я ищу объяснение для вывода этого фрагмента кода.Я искал в Интернете, но не смог найти удовлетворительного объяснения.

main()
{
     char x[10]="abcdefg" ;
     puts(&x[4]) ;
}

После выполнения этого кода я получил "efg" в качестве вывода.

Не могли бы вы объяснить этот вывод?И извинения, если эта платформа не для таких вопросов.

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018

Согласно C11, глава §7.21.7.9

int puts(const char *s);

Функция puts записывает строку, на которую указывает s, в поток, на который указывает stdout, и добавляетсимвол новой строки для вывода.Завершающий нулевой символ не записывается.[...]

Итак, в вашем случае вы передаете адрес пятого элемента в массиве x (да, массивы C используют индекс на основе 0), иоставшиеся элементы в этой строке, пока не будет напечатан завершающий ноль.

0 голосов
/ 30 сентября 2018

& x [4] - адрес в памяти элемента 4 массива символов x.Это означает, что put получает "efg" в качестве входных данных.

...