-1

我有一个嵌套数组,我试图将它从一个函数传递给另一个函数

但在另一端没有数据

这是它被初始化的地方:

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
}

提前致谢

4

1 回答 1

1

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

如果函数具有以下原型:

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

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

于 2013-10-11T21:32:37.467 回答