Друзья,
помогите разобраться. Изучаю книгу Кернигана/Ричи "Язык программирования С" (второе издание), сейчас на главе посвященной указателям. В разделе 5.2 как раз идет обсуждение, почему нужно передавать функции указатели, чтобы данная ф-ция могла менять объекты, расположенные по этим указателям.
Но в следующем разделе 5.2 приводится вариант ф-ции strlen:
/* strlen: возвращает длину строки */ int strlen(char *s) { int n; for (n = 0; *s != '\0'; s++) n++; return n; }
Цитата: "Так как переменная s - указатель, к ней применима операция ++; s++ не оказывает никакого влияния на строку символов функции, которая обратилась к strlen. Просто увеличивается на 1 некоторая копия указателя, находящаяся в личном пользовании функции strlen."
Как-то это не вяжется с ранее сказанным, ведь передавая указатель, получаешь возможность изменять содержимое этого указателя.
Либо я не так понял авторов...