int strlen(char *s){
int length;
for (length = 0; *s; length++, s++);
return length;
}
|
s это указатель на участок памяти, в котором символ строки (первая буква изначально).
цикл инкрементирует указатель, т.е. с каждой итерацией, s ссылается на след. символ.
*s даёт значение символа по указателю.
когда *s выдаёт нуль-байт, цикл прерывается.
такой же принцип в последнем примере, только там вместо инкрементирования длины в цикле, юзается разница между указателем на конец строки и на начало.