Есть задание, где надо написать функцию, которая вернёт колличество символов в строке, т.е. получается надо считать пока не наткнёшься на
\0
Я сделал вот таким способом:
unsigned strlen(const char *str) {
for (int i = 0; true; ++i)
{
if (str[i] == '\0'){
return i;
}
}
}
Но как сделать тоже самое, только работая с памятью?
В попытках разобраться застопорился в самом начале.
unsigned strlen(const char *str) {
cout << str+4 << endl;
}
int main(){
strlen("string");
}
Подскажите пожалуйста где ошибка в моих рассуждениях?
"string" - это массив чаров.
Т.к.
"string" массив, то на первый элемент будет указывать переменная в которой он содержится.
В контексте функции
strlen - это будет указатель
str. Т.е.
&str[0] тоже самое, что просто
str. По правилам сложения указателй
str+4 должно соответствовать адресу ячейки памяти индекса
4. Т.е. должен выводиться адрес 4й ячейки в 0х виде, но вместо этого выводится почему-то
"ng".
Как можно получить адрес 4й ячейки к примеру?