c语言 三维数组旋转90度使用指针偏移实现,输入指针和输出指针 arr[3][4][5]
时间: 2023-11-06 16:08:38 浏览: 98
下面是使用指针偏移实现三维数组旋转90度的C语言代码:
```
void rotate_arr(int (*arr)[4][5], int (*out)[5][4][3]) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
for (int k = 0; k < 5; k++) {
int *src = &arr[i][j][k];
int *dst = &out[2-k][j][i][0];
for (int l = 0; l < 3; l++) {
*dst = *src;
src += 5;
dst += 4;
}
}
}
}
}
```
其中,`arr`是输入指针,类型为`int (*)[4][5]`,表示一个3维数组,`out`是输出指针,类型为`int (*)[5][4][3]`,表示一个旋转后的3维数组。该函数实现的是将`arr`旋转90度后存储到`out`中。
在函数中,使用三重循环遍历`arr`中的每个元素,`src`指向当前元素的地址,`dst`指向旋转后的地址。具体实现时,每次将`src`向后移动5个元素的距离,将`dst`向后移动4个元素的距离,这样就能够正确地将原数组中的元素旋转后存储到新数组中了。
阅读全文