对二维数组 int arr[3][16];,则 arr[1] 占用内存的大小为( )字节。
这题考二维数组内存计算。拿到题先别急着乘总数,要分清 arr[1] 只是取第二行,每行有 16 个 int,int 占 4 字节,所以直接算 16×4 就行。
最容易错在把 arr[1] 当成整个二维数组,算成 3×16=48 字节选 C;或者只看到 int 占 4 字节选 A;还有人分不清行索引从 0 开始,误以为 arr[1] 是第三行。其实 arr[1] 就是第二行,大小只跟列数有关,跟行数无关。
GESP 四级 C++ 模块,考查数组内存计算与二维数组结构。命题人卡住考生对“二维数组行切片”概念的理解——很多学生看到 [3][16] 就以为要算 3×16 的总大小,却忽略了 arr[1] 只是取出其中一行。
二维数组 int arr[3][16] 在内存里是连续存放的:先放第一行 16 个 int,接着第二行 16 个,再接第三行 16 个。arr[1] 这个表达式,在 C++ 里会自动退化成指向第二行首元素的指针,但当我们问它“占用多少字节”时,实际是在问“这一行有多少个 int,每个 int 多大”。