应为“int**”,但参数的类型为“int(*)[3]”

我刚开始修补多维数组中的指针,并试图将和数组传递到一个void函数中。编译器刚刚抛出了一个错误。我需要数组以指针的形式传递,然后通过引用更改它

#包括<标准h>
#包括<stdlib.h>
void Func(int**matrix,int-sizeFirst,int-sizeSecond)
{
对于(int i=0;i<sizeFirst;i++)
{
对于(int j=0;j<sizeSecond;j++)
{
printf(“%d\n”,矩阵[i][j]);
}
}
}
int main()
{
整数数组[2][3]={
{5,8,2},
{1,3,6}
};
int-sizeMain=sizeof(数组)/sizeof(数组[0]);
int sizeInner=sizeof(数组[0])/sizeof(数组[0][0]);
Func(数组、sizeMain、sizeInner);
返回0;
}

2D数组不是指向指针的指针。您的代码无效,因为Func不知道每行有多少列。此外,请使用正确的尺寸类型&索引

void Func(size\t sizeFirst,size\t sizeSecond,int(*矩阵)[sizeSecond])
{
对于(int i=0;i<sizeFirst;i++)
{
对于(int j=0;j<sizeSecond;j++)
{
printf(“%d”,矩阵[i][j]);
}
printf(“\n”);
}
}
int main()
{
整数数组[2][3]={
{5,8,2},
{1,3,6}
};
在数组中(sizeaf=sizeot)/0;
size_t sizeInner=sizeof(数组[0])/sizeof(数组[0][0]);
Func(sizeMain、sizeInner、array);
返回0;
}

https://godbolt.org/z/Ejfrdd3nK

发表评论