gpt4 book ai didi

C++ 指针数组参数

转载 作者:搜寻专家 更新时间:2023-10-31 00:43:40 24 4
gpt4 key购买 nike

我有以下代码:

void getPossibilities(int *rating[200][3]){
// do something
}

int main ()
{
int rating[200][3];
getPossibilities(&rating);
}

这会抛出以下错误信息:

error: cannot convert int ()[200][3] to int ()[3] for argument 1 to void getPossibilities(int (*)[3])

最佳答案

函数签名应该是这样的:

void getPossibilities(int (*rating)[3]);

并将参数传递为:

getPossibilities(rating);

变量 ratingT[M][N] 形式的二维数组,它可以衰减为 T(* )[N]。所以我认为这就是您想要的。

在上面的解决方案中,数组衰减,失去一维的大小(在函数中你只知道 N 可靠,你只是失去 M 由于数组-decay),因此您必须更改函数的签名以避免数组衰减:

void getPossibilities(int (&rating)[200][3]) //note : &, 200, 3
{
//your code
}

//pass argument as before
getPossibilities(rating); //same as above

更好的做法是将模板用作:

 template<size_t M, size_t N>
void getPossibilities(int (&rating)[M][N])
{
//you can use M and N here
//for example
for(size_t i = 0 ; i < M ; ++i)
{
for(size_t j = 0 ; j < N ; ++j)
{
//use rating[i][j]
}
}
}

要使用这个函数,你必须像以前一样传递参数:

 getPossibilities(rating); //same as before!

关于C++ 指针数组参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10297255/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com