#include <stdio.h>
#include <stdlib.h>
// 提取某一层数据
int* extractLayer(int (*cube)[3][4], int layer) {
return (int*)cube[layer];
}
// 修改某一层数据
void modifyLayer(int (*cube)[3][4], int layer, int *newData) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
cube[layer][i][j] = newData[i * 4 + j];
}
}
}
// 转置某一层数据(假设转置是指行列互换,这里只适用于二维数组为方阵的情况,此处3x4需特殊处理)
void transposeLayer(int (*cube)[3][4], int layer) {
int temp[3][4];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
temp[i][j] = cube[layer][i][j];
}
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
cube[layer][j][i] = temp[i][j];
}
}
}
void printCube(int (*cube)[3][4]) {
for (int k = 0; k < 2; k++) {
printf("Layer %d:\n", k);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
printf("%d ", cube[k][i][j]);
}
printf("\n");
}
}
}
int main() {
int cube[2][3][4] = {
{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
},
{
{13, 14, 15, 16},
{17, 18, 19, 20},
{21, 22, 23, 24}
}
};
printf("Original cube:\n");
printCube(cube);
// 提取第1层数据
int *layerData = extractLayer(cube, 1);
printf("\nData of layer 1:\n");
for (int i = 0; i < 3 * 4; i++) {
printf("%d ", layerData[i]);
}
// 修改第1层数据
int newData[3 * 4] = {25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36};
modifyLayer(cube, 1, newData);
printf("\nModified cube:\n");
printCube(cube);
// 转置第1层数据
transposeLayer(cube, 1);
printf("\nTransposed layer 1 cube:\n");
printCube(cube);
return 0;
}
代码说明
extractLayer
函数:通过指针操作提取指定层的数据,并返回一个指向该层数据首元素的指针。
modifyLayer
函数:将新的数据覆盖到指定层的数组中。
transposeLayer
函数:对指定层的数据进行转置操作(这里针对3x4数组特殊处理,简单行列互换)。
printCube
函数:用于打印三维数组的所有数据,方便查看操作前后的变化。
main
函数:对上述函数进行调用,展示如何提取、修改和转置三维数组某一层的数据。