我想查找指針數組的長度。 這是我的代碼:c,查找指針數組的長度
char **histargv[histsize];
histargv[hist] = (char**)malloc(sizeof(char *)*arg);
變量arg不是常量。 histargv數組的每個索引具有不同的參數值。 那麼我怎樣才能找到每個指數的參數值?
由於
我想查找指針數組的長度。 這是我的代碼:c,查找指針數組的長度
char **histargv[histsize];
histargv[hist] = (char**)malloc(sizeof(char *)*arg);
變量arg不是常量。 histargv數組的每個索引具有不同的參數值。 那麼我怎樣才能找到每個指數的參數值?
由於
如果指針是字符串,則可以通過使用strlen
找出串(未存儲器塊的大小)的長度。即搭配:
for (size_t i = 0; i < 100; ++i) {
histargv[i] = read_some_string_somehow_and_return_in_new_buffer();
}
可以打印字符串,包括它們的長度是這樣的:
for (size_t i = 0; i < 100; ++i) {
printf("%3zu %zu %s\n", i, strlen(histargv[i]), histargv[i]);
}
如果這不是字符串,那麼你就應該按照禮Sadoffs評論的鏈接。
你也可以找到沒有'strlen'的字符串的長度。你也可以使用'int i;'和'for(i = 0; *(c + i)!='\ 0'; i ++);'然後'i'就是字符串的長度(假設它是空的終止和'char * c'是字符串)。 –
有很多方法,是的。但'strlen'可能要快得多,因爲它可以使用系統相關的優化,你的循環可能不會使用。你也可以寫'c [i]'而不是'*(c + i)',你可以完全放棄'!='\ 0'',你可以使用'size_t'作爲'i'的數據類型而不是' int'和and和;) –
[如何找到'sizeof'(指向數組的指針)?](http://stackoverflow.com/questions/492384/how-to-find-the-sizeofa-pointerpolation對數組) –
只能從其指針中找到動態分配數組的長度。 – qxz