Q
一行C代碼的邏輯
0
A
回答
5
這對於「數組中的元素數目」一個常見的C成語。
由於數組decays to a pointer最輕微的挑釁,*data
是數組的第一個元素,因此它將數組的總大小除以其第一個元素的大小,給出元素的數量。
對於這種技術有任何可能的反對意見,無論是基於樣式的理由,它只適用於聲明爲數組的變量(不是那些作爲第一個元素的指針傳遞的變量 - 它依賴於衰減) - 指針尚未發生),或C++代碼中可能的破損情況;也就是說,它在舊的C代碼中仍然很常見。
2
它將數組的總大小除以每個元素類型的大小。 它返回數組中元素的數量
0
它給出了數組中元素的數量。因爲它是一個編譯時的值而不是運行時的值,所以它並不實際評估sizeof()
中的任何內容,這很好,因爲即使任何指針爲null或超出範圍,它也能正常工作。
(有趣的事實:我的Windows的C運行時,不過已經有了_countof()
宏正是這麼做的,並且在Windows SDK,還有的ARRAYSIZE()
宏也做同樣的事情。)
0
它只是計算數組中元素的數量 - 即整個數組的大小除以數組中第一個元素的大小,得出元素的數量(數組中的所有元素都是相同的大小)。
相關問題
- 1. SQL代碼/邏輯
- 2. Javascript代碼邏輯
- 3. 邏輯後面的代碼
- 4. 明白我的邏輯,而如果代碼在C? 37行/空格的代碼
- 5. vb.net代碼條件邏輯
- 6. 邏輯和代碼幫助
- 7. 源代碼邏輯評估
- 8. Java代碼邏輯錯誤
- 9. EF代碼第一次執行中的觸發邏輯
- 10. 我的代碼中的Java邏輯
- 11. 該代碼是業務邏輯還是表示邏輯?
- 12. 代碼中的邏輯錯誤
- 13. 不確定代碼的邏輯
- 14. 代碼的邏輯有什麼問題?
- 15. 共享代碼的邏輯地址
- 16. 代碼片段中的邏輯錯誤?
- 17. 此代碼的Swift 3.1 eri- tion邏輯
- 18. 這段代碼的邏輯是什麼?
- 19. 訪問從C/C「自然強迫」邏輯++代碼
- 20. 在我的C代碼的邏輯錯誤
- 21. 動態控制中的C#邏輯故障代碼
- 22. 如何實現基於決策樹的C#代碼/邏輯?
- 23. 將C#代碼轉換成jquery datepicker邏輯的難度
- 24. 邏輯&&在C
- 25. 展示出乎意料的邏輯行爲的Javascript代碼
- 26. 代碼崩潰沒有邏輯錯誤
- 27. 解析雲代碼:邏輯在承諾
- 28. 邏輯落後javascript代碼要求
- 29. 如何簡化這個邏輯/代碼?
- 30. c#的ANTLR行爲不合邏輯
儘管在假設爲數組的東西上使用`* data`會讓我感到不安。我寧願看到`#define array_size(x)(sizeof(x)/ sizeof 0 [x])`(這是一個安全的宏,如果你碰巧在C++代碼中使用它,將無法用於重載` ]`運營商。) – 2011-01-07 06:46:47