配列の要素数を計算しようとしていたところ、次の行だと言われました
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
260のsizeof(バイト単位?ビット?idk、誰かこれも説明できますか?)によって返されるサイズがあるようです。行
sizeof(binaryPath[0]);
値は 1 です。
明らかに、260 を 1 で割ると 260 という結果が得られますが、これは配列内の要素の数ではありません (私のカウントでは 42 程度です)。誰かが私が間違っていることを説明できますか?
私が考えているように、実際には配列ではないというこっそり疑いがあります(私はJavaとPythonから来ました)が、よくわからないので、皆さんに尋ねています。
ありがとう!