我试图计算数组中的元素数,并被告知该行
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 除以 1 得到 260 的结果,这不是数组中元素的数量(据我计算,它是 42 左右)。有人可以解释我做错了什么吗?
我有一个偷偷摸摸的怀疑,它实际上不是我认为的数组(我来自 Java 和 python),但我不确定,所以我问你们。
谢谢!