下面這段:
int main(){
char s[]="hello world";
char *n;
n=&s[0];
int t=strlen(n);
printf("%d\n",t);
}
得到字符長度是11,但是如果把char s[]="hello world";改為char s[11]="hello world";
最後的值就會變成17,多出來的6是怎麼回事
另外 如果重寫strlen方法
size_t strlen(const char *s){
int n;
for(n=0;*s!='\0';s++)
n++;
return n;
}
for循環裡的*s!='\0'改成EOF 最後的結果就會變成24
char s[]="hello world"是直接在最後賦值‘\0’;而改為char s[11]="hello world"則是用11個那麼大的地方存放你的字符串,然而並沒有結尾,所以後者你不一定一直是17,因為他的’\0‘不一定就在後第6個位置。