我试图计算数组中的元素数量,并被告知该行
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 返回的大小似乎为 260(以字节为单位?位?idk,有人也可以解释一下吗?)。该行
sizeof(binaryPath[0]);
给出值 1。
显然,260 除以 1 的结果是 260,这不是数组中元素的数量(根据我的统计,它是 42 左右)。有人可以解释我做错了什么吗?
我有一种偷偷的怀疑,这实际上并不是我所认为的数组(我来自 Java 和 python),但我不确定,所以我问你们。
Thanks!
260 is MAX_PATH
,你得到的是因为sizeof
返回整个数组的大小 - 不仅仅是数组内字符串的大小。
要获得您正在寻找的行为,请使用strlen
反而:
cout << "binaryPath: " << binaryPath << endl;
cout << "strlen(binaryPath): " << strlen(binaryPath) << endl;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)