c语言 三维数组旋转90度,使用指针偏移实现,输入指针和输出指针
时间: 2023-11-02 10:10:28 浏览: 113
c语言旋转位图90度
5星 · 资源好评率100%
下面是一个使用指针偏移实现将三维数组旋转90度的代码:
```c
void rotate(int *in, int *out, int n) {
int i, j, k;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
for (k = 0; k < n; k++) {
*(out + k*n*n + j*n + n-i-1) = *(in + i*n*n + j*n + k);
}
}
}
}
```
其中,`in`是输入指针,`out`是输出指针,`n`是三维数组的边长。在循环中,通过指针偏移实现了将三维数组旋转90度的操作。具体来说,对于输入数组中的第`(i, j, k)`个元素,在输出数组中对应的位置是`(k, j, n-i-1)`。
使用示例:
```c
int main() {
int in[2][2][2] = {{{1, 2}, {3, 4}}, {{5, 6}, {7, 8}}};
int out[2][2][2];
rotate((int *)in, (int *)out, 2);
// 输出旋转后的数组
int i, j, k;
for (i = 0; i < 2; i++) {
for (j = 0; j < 2; j++) {
for (k = 0; k < 2; k++) {
printf("%d ", out[i][j][k]);
}
printf("\n");
}
printf("\n");
}
return 0;
}
```
输出结果:
```
5 1
6 2
7 3
8 4
```
注意,在将输入指针转化为`int *`类型时需要使用强制类型转换。
阅读全文