c++ - C++ 中的 sizeof 字符串数组

标签 c++ c arrays sizeof

我对 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/

相关文章:

c++ - 可以使用尾随返回类型进行条件重载吗?

python - python中的数组插值?

java - 错误: generic array creation with my own object

c - 如何在 Mac 操作系统上等待用户的操作?

c - C 的格式说明符指南

php - 选择多个数组元素

c++ - Eclipse-CDT:Windows下Linux交叉编译时的自动路径发现

c++ - 为什么 putchar ('\\\' );不会工作

c++ - 选择并行化方案要考虑什么?

c++ - 理解令人困惑的 typedef 语法