[英]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.