Я написал функцию, использующую арифметику указателей для вычисления длины строки, но, похоже, она работает правильно только при использовании хакерской методологии.
Я пытался использовать свое понимание адресации памяти, чтобы заставить функцию работать как задумано.
int getLength(const char *str) {
int length;
while (*str != '\0') {
length += str - (++str);
}
return abs(length);
}
int getLength(const char *str) {
int length;
while (*str != '\0') {
length += str + (++str);
}
return length;
}
Первая функция возвращает правильную длину, а вторая возвращает 0, почему это так?