我試圖計算數組中元素的個數,並且被告知,該行如何計算char數組中的元素數量?
int r = sizeof(array)/sizeof(array[0])
會給我數組中元素的個數。我發現這個方法可以工作,至少對於int數組來說。但是,當我嘗試這些代碼時,事情就會崩潰。
#include <iostream>
#include <Windows.h>
using namespace std;
int main() {
char binaryPath[MAX_PATH];
GetModuleFileName(NULL, binaryPath, MAX_PATH);
cout << "binaryPath: " << binaryPath << endl;
cout << "sizeof(binaryPath): " << sizeof(binaryPath) << endl;
cout << "sizeof(binaryPath[0]: " << sizeof(binaryPath[0]) << endl;
return 0;
}
,當該程序運行binaryPath的價值是
C:\Users\Anish\workspace\CppSync\Debug\CppSync.exe
似乎有通過的sizeof返回的大小(以字節爲單位?位?IDK的,可能有人得解釋一下嗎?)的260線
sizeof(binaryPath[0]);
給出1.
顯然然後除以一個260的值給出了260的結果,WH ich不是數組中元素的數量(按我的計算,它是42左右)。有人能解釋我做錯了什麼嗎?
我有一個偷偷摸摸的懷疑,實際上並不是一個數組(我來自Java和python),但我不確定所以我在問你們。
謝謝!
像我作爲一個答案說: http://stackoverflow.com/questions/16049936/cant-output-int -s-result-of-sizeof 但我被告知這不是正確的答案,因爲它與你的代碼崩潰無關。也許你想回到這個問題並解釋(以防其他人遇到類似的問題)修復是什麼...... –
在完全不同的說明中,你寫了'using namespace std;'在那裏,還是它是通過某種工具加入的嗎?只是尋找信息,不涉及任何判斷。 –
'char'數組的元素數量是'MAX_PATH'。它是如此簡單。 – juanchopanza