Это вопрос языка-юриста.
Описание функции strcpy
дано в 7.24.2.3(p2)
:
Функция strcpy
копирует строку, указанную напо s2 (включая завершающий нулевой символ) в массив, на который указывает s1.
Итак, рассмотрим следующий код:
char test[8] = "123";
strcpy(test + 3, "4567");
printf("%s\n", test); //1234567
Он работает, как и ожидалось, но язапутался в объекте, указанном test + 3
.Ясно, что объект, на который указывает test
, имеет объявленный тип char[8]
.Но, насколько я вижу, Стандарт не явно определил вид этого:
"Если у нас есть массив n
элементов, чем указатель наi < n
th-й элемент можно считать указателем на первый элемент массива n - i
элементов ".
Поскольку функция strcpy
требует, чтобы ее первый операнд был массивом, мы можем педантичноговоря применить арифметику указателя, как я показал выше?