This is a snippet from my code editor。我试图运行此代码,无法理解while循环如何通过这里的字符串。请解释一下。
#include <iostream>
using namespace std;
int my_strlen(char *string){
int length = 0;
while(*string !='\0'){
length++;
cout << string <<endl;
string++;
}
return(length);
}
int main() {
my_strlen("this is a test");
return 0;
}
答案 0 :(得分:1)
指针本质上是一个变量,表示存储器中存储某些值的特定位置,而不是实际值本身。
您的函数将字符指针char*
作为参数。因此,该参数是存储器中某些位置,其中函数将假定存储字符。然后while循环检查内存中位的值,以查看存储在那里的值是否为'\0'
。
行string++
正在将字符指针前进到内存中的下一个位置,其中while循环将再次检查存储在下一个位置的值。可以把它想象成概念性地移动你正在检查的任何字符串中的字符。
例如,如果您要检查字符串"abcd\0"
,string
将指向'a'
。然后,string++
会string
指向'b'
,然后指向'c'
,然后指向'd'
等。
循环将重复,直到string
指向的位置保留'\0'
的值。