gpt4 book ai didi

c++ - 错误 : cannot convert 'int (*)[3]' to 'int (*)[100]' for argument '1' to 'void repl(int (*)[100], int, int)'

转载 作者:行者123 更新时间:2023-11-30 01:14:02 26 4
gpt4 key购买 nike

你好,我正在尝试编写这个程序,用 -1 替换每个负数,用 1 替换正数但是一个错误:

[Error] cannot convert 'int ()[3]' to 'int ()[100]' for argument '1' to 'void replace(int (*)[100], int, int)'

这是什么意思??

#include<iostream>
using namespace std;
void replace(int Arr[][100],int rsize, int csize)
{
for(int r=0;r<rsize;r++)
{
for (int c=0;c<csize;c++)
{
if (Arr[r][c]>0) Arr[r][c]=1;
else if (Arr[r][c]<0) Arr[r][c]=-1;
else Arr[r][c]=0;
}
}

}

int main()
{
int a[4][3]={
{2,0,-5},
{-8,-9,0},
{0,5,-6},
{1,2,3}};

replace(a,4,3);

for(int i=0;i<4;i++)
for (int j=0;j<3;j++)
cout<<a[i][j]<<" ";}cout<<endl;

system ("pause");
return 0;
}

最佳答案

您声明了函数 void replace(int Arr[][100],int rsize, int csize) - 它需要二维数组,“内部”维度为 100。然后你传递给它 int a[4][3]它具有“内部”维度 3。编译器无法转换它。使用 Arr[x][y] 时,这些尺寸用于计算内存位置偏移(它相当于 *(Arr + x * 100 + y) 。这就是为什么编译器不能将 3 的数组分配给 100 的数组。

如果你想要你的 replace使用任何尺寸将其更改为: void replace(int* Arr,int rsize, int csize) .然后使用 *(Arr + r*csize + c)访问字段而不是 Arr[r][c]

更好的解决方案:您将此问题标记为 C++ - 使用 C++ 库 :) - std::vector<std::vector<int> >std::array (C++11)

关于c++ - 错误 : cannot convert 'int (*)[3]' to 'int (*)[100]' for argument '1' to 'void repl(int (*)[100], int, int)' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30760040/

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