2016-02-20 131 views
-1

這是一個java代碼。如何查找char數組的長度?

for (int j = 0; j < charArray[i].length; j++) { 

      System.out.print(charArray[i][j]); 

     } 

非常簡單的問題,我如何使java長度屬性,但在c + +?

+2

可能的複製[我要如何找到一個數組的長度?](http://stackoverflow.com/questions/4108313/how-do-i-find-the-length-of-an-array) –

+0

[C++中的array.length()(用在Java中)等價於什麼?](https:// www .quora.com/What-is-the-equivalent-of-array-length-used-in-Java-in-C++),[如何在C++中使用數組?](http://stackoverflow.com/q/4810664/995714) –

+1

考慮使用C++容器類之一,例如'std :: vector'或'std :: array'。 –

回答

0

你可以通過數組指針進行函數調用,您可以通過

if (charArray != 0) 

檢查,如果指針爲空,那麼你可以試試這個

sizeof(charArray)/sizeof(charArray[0])

+0

我沒有在charArray [0]中得到0。 – jarwin

+1

這意味着整個數組的大小除以單個元素的大小 –

+3

只有當'charArray'實際上是一個數組時,這纔有效。如果您已經將它作爲參數傳遞給一個函數,那麼您實際傳遞的可能是一個指針,並且它的大小不可用。 –

0
template <typename T,unsigned S> 
inline unsigned arraysize(const T (&v)[S]) { return S; } 

的編譯器會嘗試根據模板創建一個匹配數組大小的函數。我對此答案毫不留情,請參閱下面的鏈接,並提供更詳細的解釋。

http://www.cplusplus.com/forum/general/33669/

它不用於動態分配的數組的工作,但它給你一個編譯器錯誤。對於動態分配的數組是否有效?

0

只是這樣做: for(int a=0; charArray[a] != '\0' ; a++); 這將charArray的長度存儲在「A」

+0

這隻有在它是一個以空字符結尾的字符串時纔有效,並且會給你字符串的大小,而不是數組。也就是說,如果字符串存儲在大於自身的數組中,它只會給出'\ 0'的大小。另外,如果數組不是以空字符結尾的字符串,則會導致分段錯誤。 – Ramon

+0

但是不是這樣,所有的字符串都強制以空字符結尾。 ??? –

+0

對於數組而言,我們只需要字符串的長度。所以我想,它會返回字符串的長度,直到遇到空字符 –