我对 C++ 中的 sizeof 字符串数组感到困惑,我有以下字符串数组:
static const char* namedButtonStr[] = {
"GLUT_LEFT_BUTTON",
"GLUT_MIDDLE_BUTTON",
"GLUT_RIGHT_BUTTON"
};
为了获取这个数组的大小,使用了以下代码:
int size = int(sizeof(namedButtonStr)/sizeof(namedButtonStr[0]));
其中sizeof(namedButtonStr)
为12,sizeof(namedButtonStr[0])
为4,数组大小为12/4 = 3。
我的问题是,为什么 sizeof(namedButtonStr)
是 12 而 sizeof(namedButtonStr[0])
是 4?我的理解是 sizeof(namedButtonStr)
是 3 而 sizeof(namedButtonStr[0])
是 17(“GLUT_LEFT_BUTTON”有 17 个字符)。
最佳答案
namedButtonStr[0]
类型为 const char*
, 所以它是 sizeof
是指针的大小,而不是它指向的数组。
namedButtonStr
,相反,是一个数组,所以它的 sizeof
是整个数组的字节大小,即3 * sizeof(<one item in the array>)
.
编辑:顺便说一下,这是确定数组大小的一个非常标准的惯用法,您会经常看到它。
关于c++ - C++ 中的 sizeof 字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26875676/