我一直在努力弄清楚如何将2D数组传递给函数,我想我已经弄明白了。我现在的问题是由于某种原因,这个数组(见下文)从25增加到100,我无法弄清楚原因。我无法确定它在哪里发生错误。
#include <iostream>
void testFunc(int (&n)[5][5]) {
n[0][0] = 5;
}
int main() {
int arr3[5][5];
// The array is initialized here with all values equaling 8.
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
arr3[i][j] = 8;
}
}
testFunc(arr3); // Function is called here changing [0][0] to the value 5.
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
std::cout << arr3[i][j] << ' ';
}
std::cout << '\n' << std::endl;
}
std::cout << sizeof(arr3) << std::endl;
return 0;
}
当我尝试用for-loop
写i < sizeof(arr3)
时,我的大小为100.不确定原因。它在哪里获得了这个价值?
答案 0 :(得分:1)
您的数组大小为5*5 = 25
,int
占用4个字节。所以它变成了100
。
答案 1 :(得分:1)
sizeof
不是元素的数量。它是char
中对象的大小,即大多数现代系统的字节数。
您的系统具有32位(4 char
/字节)int
s。这给你5 * 5 * 4 = 100。
答案 2 :(得分:0)
数据大小也取决于CPU寄存器的大小。在32位机器中,int的大小为4.但是在早期的16位机器中,int的大小为2。