C++ 嵌套数组[][] 在第二个函数中为空

c++ nested arrays[][] empty in second function

本文关键字:函数 嵌套 数组 C++ 第二个      更新时间:2023-10-16

我有一个嵌套数组,我正在尝试将其从一个函数传递到另一个函数

但另一方面没有数据

这是初始化它的地方:

int myarray[4][23];
//myarray populated
int size = sizeof(myarray) / sizeof(myarray[0]);
std::cout << "AND " << size << std::endl;    //this gives me 4 as expected
function(myarray);

然后它转到另一个文件并使用:

function(int myarray[][23]) {
    int size = sizeof(myarray) / sizeof(myarray[0]);
std::cout << "AND " << size << std::endl;    //this gives me 0
}

提前致谢

当你将数组传递给函数时,它会衰减到指针,并且使用sizeof找出其大小的能力将丢失。它返回指针的大小。看看:什么是阵列衰减?

在具有以下原型的功能的情况下:

void function(int myarray[][23]);

参数的类型实际上是int (*)[23]的,因此sizeof(myarray)返回指针的大小,在 32 位系统上为 4,在 64 位系统上为 8。