gpt4 book ai didi

c++ - C++ 中二维数组的指针?

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

我正在编写一个将 NxN 矩阵旋转 90 度的函数。

这是我的功能

// "matrix" is an n by n matrix  
void rotateMatrix(int ** matrix, int n)
{
for(int layer=0; layer < n; layer++)
{
int first = layer, last = n - layer -1;
for(int i=0; i<n; i++)
{
int temp = matrix[i][last];
matrix[i][last] = matrix[first][i];
matrix[first][i] = matrix[i][first];
matrix[i][first] = matrix[last][i];
matrix[last][i]=temp;
}
}
}

下面是我在主函数中初始化和调用函数的方式:

int m[5][5] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};
rotateMatrix(m,5);

我从我的 IDE 得到的是:

> error: cannot convert ‘int (*)[5]’ to
> ‘int**’ for argument ‘1’ to ‘void
> rotateMatrix(int**, int)’

我有点知道为什么它是错误的,因为“m”是一个 int* 。但是,我不确定我能否解决这个问题?

最佳答案

矩阵的维度在编译时是否已知?如果是这样:

template <size_t n>
void rotateMatrix(int (&matrix)[n][n])
{
...
}

关于c++ - C++ 中二维数组的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3497734/

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