二维数组指针上下左右移动
时间: 2024-01-06 10:25:02 浏览: 266
在C语言中,可以使用指针来操作二维数组进行上下左右移动。下面是一个示例代码,演示了如何使用指针来实现二维数组的上下左右移动:
```c
#include <stdio.h>
void moveUp(int** arr, int rows, int cols, int* row, int* col) {
if (*row > 0) {
(*row)--;
}
}
void moveDown(int** arr, int rows, int cols, int* row, int* col) {
if (*row < rows - 1) {
(*row)++;
}
}
void moveLeft(int** arr, int rows, int cols, int* row, int* col) {
if (*col > 0) {
(*col)--;
}
}
void moveRight(int** arr, int rows, int cols, int* row, int* col) {
if (*col < cols - 1) {
(*col)++;
}
}
int main() {
int rows = 3;
int cols = 3;
// 创建二维数组
int arr[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// 将二维数组转换为指针数组
int* ptrArr[3];
for (int i = 0; i < rows; i++) {
ptrArr[i] = arr[i];
}
// 初始化当前位置
int row = 0;
int col = 0;
// 向上移动
moveUp(ptrArr, rows, cols, &row, &col);
printf("当前位置:(%d, %d),值:%d\n", row, col, ptrArr[row][col]);
// 向下移动
moveDown(ptrArr, rows, cols, &row, &col);
printf("当前位置:(%d, %d),值:%d\n", row, col, ptrArr[row][col]);
// 向左移动
moveLeft(ptrArr, rows, cols, &row, &col);
printf("当前位置:(%d, %d),值:%d\n", row, col, ptrArr[row][col]);
// 向右移动
moveRight(ptrArr, rows, cols, &row, &col);
printf("当前位置:(%d, %d),值:%d\n", row, col, ptrArr[row][col]);
return 0;
}
```
在上面的代码中,我们首先创建了一个3x3的二维数组`arr`,然后将其转换为指针数组`ptrArr`。接下来,我们使用`row`和`col`变量来表示当前位置的行和列。通过调用`moveUp`、`moveDown`、`moveLeft`和`moveRight`函数,可以实现二维数组的上下左右移动。每次移动后,我们打印出当前位置和对应的值。
需要注意的是,二维数组在内存中是按行存储的,因此在将二维数组转换为指针数组时,需要将每一行的地址存储到指针数组中。
阅读全文