strlen()被null終止?那麼當strlen(c)和strlen()是什麼時候,char c [] = {'1','1'}和char d [] = {'1','1','\ 0'}如何得到相同的輸出2? (d)被使用?strlen如何爲{'1','1'}和{'1','1',' 0'}給出相同的輸出?
回答
前者是未定義的行爲;它可以輸出2,也可以輸出500,終止你的程序或破壞你的電腦。
這只是你得到運氣。
strlen()函數將開始計數直到它找到'\ 0'。
在您的d字符串中,將'\ 0'放在字符串的末尾。 strlen func然後返回2個字符。
在你的第二個函數裏,在你的記憶裏你有很多'\ 0',並且你的c字符串結尾的字符是'\ 0'。所以,它返回相同的值;)
如果因爲未定義的行爲而發生作用,我會稱之爲*糟糕的運氣。 – user694733
strlen(d)
將返回2,沒有問題。
strlen(c)
將返回> = 2 如果字符在位置c + 2 ==「\ 0」,那麼你是幸運的,strlen(c)
回報2,但你不能有任何的保障!
\ 0標記字符串的終止字符不爲NULL。 strlen在給出一個字符串時不計算終止字符,它會計數直到找到\ 0,然後停止並返回。
同樣在寫作時
char a [] =「hello」;
這將分配6個內存空間5用於hello和1用於\ 0。 在大多數情況下strlen(c)不會是2
除了你以外,沒有人在討論'NULL'。 –
strlen()被null終止?
我認爲使用錯誤的術語會產生一些混淆:「strlen」是C標準函數的名稱;函數不是「由null終止」。如果你的意思是strlen應該用於以空字符結尾的字符序列,那麼「null-terminated」意味着'\ 0'是決定序列結束的最終哨兵字符,那麼是的:strlen會這樣做。
請注意,NULL(全部大寫)通常定義爲0(在stddef.h中)的別名。
然而,上面所說的,在你的例子中,字符'c'和'd'的兩個數組有不同的內容。前者包含兩項,後三項。 strlen的有效輸入只是你的'd'數組。你的數組'c'不是以null結尾的。
strlen返回正確的長度的原因無論如何是'c'被分配的區域包含,純粹的機會,在數組的最後一個項目後的'\ 0'。
- 1. glOrtho(-1,1,-1,1,-1,1)完成什麼?
- 2. x [1,1]和x.item(1,1)之間的區別是什麼?
- 3. jQuery - 給出一個json響應,數組如下:[1,1] [2,3],[5,1]如何迭代?
- 4. Strlen沒有給出正確的輸出
- 5. Javascript Canvas getImageData顏色(x,y,1,1).data
- 6. 在此Javascript代碼中返回-1,1和0是什麼意思?
- 7. 爲什麼值輸出爲相同A [0],&A,和* A?
- 8. Tensorflow - 任何輸入都會給出相同的輸出
- 9. 如何使用CORDIC計算[-1,1]以外的數字的指數?
- 10. 錯誤strlen的輸出
- 11. GCC和TC給出不同的輸出?
- 12. CPP和Java給出不同的輸出
- 13. 給多個SKNode隨機生成SKTexture給出相同的輸出
- 14. 爲什麼發電機給出相同的輸出,如果沒有分配給
- 15. strlen給出意想不到的輸出C
- 16. PHP和getimagesize()函數返回1,1(寬度,高度)
- 17. 相同的程序給出不同的輸出每次運行
- 18. 向量在出界時給出0作爲輸出?
- 19. 相同的查詢將給出不同的輸出在MSSQL和Hibernate 3個
- 20. 錯誤:(1,1)錯誤:內容不被允許在序言
- 21. 爲什麼在C睡眠後(5)給我輸出相同的輸出?
- 22. 爲什麼__len __()給出s = []和s = [[]]的不同輸出結果?
- 23. Excel和R爲什麼給出不同的ANOVA輸出?
- 24. 爲什麼str.count('')和len(str)給出不同的輸出?
- 25. 爲什麼總是給輸出0 0 0?
- 26. 單個條件給出與WHERE條件相同的輸出
- 27. 批次隨機函數給出相同的第一輸出
- 28. glCreateShader給出相同的ID
- 29. std :: cout給出不同的輸出qDebug
- 30. 爲什麼不通過context.restore()將上下文的比例設置回(1,1)?
'\ 0'是字符串終止的符號不爲空 –
可能在'c'數組中的第二個元素後面恰好有一個0。 –
@AlexandruCimpanu ** C99標準**調用字符串「null-terminated」(例如p303)。 OP指的是空字符,而你可能正在考慮空指針或NULL(它不能保證是指針)。 –