簡體   English   中英

如何獲得char **的長度?

[英]How to get length of char**?

快速的c問題:如何知道char * foo []的長度?

謝謝。

你不能 並非不了解指針內部的內容,或者不提前存儲該數據。

您是說數組中的字符串數是多少?

如果數組是在同一塊中的堆棧上分配的,則可以使用sizeof(foo)/sizeof(foo[0])技巧。

const char *foo[] = { "abc", "def" };
const size_t length = sizeof(foo)/sizeof(foo[0]);

如果您在談論傳遞給main的argv ,則可以查看argc參數。

如果數組是在堆上分配的或傳遞給函數的(它將分解為指針的函數),則除非您分配數組的人也將大小傳遞給您,否則您將不走運。

如果數組是靜態分配的,則可以使用sizeof()函數。 所以sizeof(foo)/sizeof(char *)可以工作。 如果數組是動態創建的,那么您就麻煩了! 這樣的數組的長度通常將被顯式存儲。

編輯:janks當然是正確的, sizeof是一個運算符。

還值得指出的是,C99確實允許在可變大小的數組上使用sizeof 但是,不同的編譯器實現C99的不同部分,因此需要謹慎。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM