Не могли бы вы помочь мне понять указатели. Я просто читаю арифметику с указателем и адресом массива c, поэтому я понимаю разницу между увеличением, на которое указывает указатель, и увеличением, на которое указывает указатель, назначением массивов указателям и индексацией. Но я запутался.
Так что в этой книге K & R объясняется, что вы можете изменить указатель, чтобы указать точку в другом месте (я согласен), но результат не определен, если вы назначаете расположение строковой константы для указатель, а затем попытаться изменить содержимое строки. Так как же работает strcpy.
void strcpy(char *s, char *t)
{
while (*s++ = *t++)
;
}
Если s и t являются указателями на адрес массива, то я считаю, что это работает, потому что s и t указывают на массивы, а не на строковые константы, и увеличивают t до s = t! = '\ 0'. Я экспериментировал с указателями здесь, присваивая два массива двум указателям, а затем использовал strcpy
main()
{
char array123[3] = "123";
char array4[2] = "44";
char *stringp1 = array123;
char *stringp2 = array4;
strcpy(stringp1, stringp2);
printf("%s", stringp1);
}
. Я получил ошибки и сделал снимок ошибок: https://imgur.com/a/tXIKNmZ
Так что я путаю. Мне нужна помощь.