C语言写自定义一个二维数组 3*3,通过指针 + 循环的方式,修改第一行第一列为1,第二行第二列为2,第三行第三列为3。
时间: 2024-02-29 16:52:13 浏览: 95
可以使用以下代码实现:
```c
#include <stdio.h>
int main()
{
int arr[3][3] = {0};
int i, j;
int *p = &arr[0][0]; // 指向数组第一个元素的指针
// 修改对角线上的元素
for(i = 0; i < 3; ++i)
{
*(p + i*3 + i) = i + 1;
}
// 输出二维数组
for(i = 0; i < 3; ++i)
{
for(j = 0; j < 3; ++j)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
```
代码中,我们先定义了一个 3x3 的二维数组 `arr`,并将其所有元素初始化为 0。然后,我们使用指针变量 `p` 指向数组的第一个元素,即 `arr[0][0]`。接着,我们利用循环和指针的加法运算,分别修改了第一行第一列、第二行第二列和第三行第三列的元素。最后,我们输出了修改后的二维数组。
注意,`*(p + i*3 + i)` 这个表达式的含义是:首先将指针 `p` 移动到第 `i` 行第 `i` 列的位置,然后再用 `*` 取出该位置的元素。其中,因为 `p` 指向的是一个 `int` 类型的数组,所以每次移动 `p` 时需要乘以数组的列数(即 3)。
阅读全文