我見過的標準執行的使用strlen的指針:çstrlen的使用指針
int strlen(char * s) {
char *p = s;
while (*p!='\0')
p++;
return p-s;
}
我得到這個工作,但是當我嘗試這樣做使用3種方法(學習指針運算現在)做的,我想知道他們最近怎麼了?
這有點類似於這本書。這是錯的嗎?
int strlen(char * s) { char *p = s; while (*p) p++; return p-s; }
我雖然這將是錯的,如果我傳遞一個空字符串,但仍然給我0,因爲p有點混亂預增:(現在它回到我5)
int strlen(char * s) { char *p = s; while (*++p) ; return p-s; }
想通了,後增加和返回+1。
int strlen(char * s) { char *p = s; while (*p++) ; return p-s; }
這是我的主要看起來像和現在,這是給我5. main(){0} {0} {0} {char A [] =「」; printf(「%d」,strlen(A)); } – user7703770
啊......我明白了。發生什麼事情是你在檢查指針前先增加指針。你最終檢查的是堆棧中的數據。由於沒有定義,你可能會得到空字符串的任何值,直到你點擊一個\ 0。 – lungj