2. 自定义一个二维数组 3*3,通过指针 + 循环的方式,修改第一行第一列为1,第二行第二列为2,第三行第三列为3。
时间: 2023-09-23 20:13:00 浏览: 50
下面是一个示例代码,使用指针和循环来修改二维数组的值:
```c++
#include <iostream>
int main() {
// 定义一个3x3的二维数组
int arr[3][3] = {0};
// 使用指针和循环修改数组的值
for (int i = 0; i < 3; i++) {
int* ptr = *(arr + i) + i;
*ptr = i + 1;
}
// 输出修改后的二维数组
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
std::cout << arr[i][j] << " ";
}
std::cout << std::endl;
}
return 0;
}
```
输出结果为:
```
1 0 0
0 2 0
0 0 3
```
在上面的代码中,我们使用 `arr + i` 获取第i行的指针,然后再加上i的偏移量,获取到第i行第i列的指针,最后通过 `*ptr` 修改值。
相关问题
C语言写出自定义一个二维数组 3*3,通过指针 + 循环的方式,修改第一行第一列为1,第二行第二列为2,第三行第三列为3。
好的,我可以帮您解答这个问题。以下是示例代码:
```
#include <stdio.h>
int main() {
int matrix[3][3]; // 定义一个3*3的二维数组
int i, j; // 循环计数器
// 初始化二维数组
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
matrix[i][j] = 0;
}
}
// 修改第一行第一列为1,第二行第二列为2,第三行第三列为3
int *p = &matrix[0][0]; // 定义指针p指向二维数组的第一个元素
*p = 1; // 修改第一行第一列为1
p += 4; // 移动指针到第二行第二列的位置
*p = 2; // 修改第二行第二列为2
p += 4; // 移动指针到第三行第三列的位置
*p = 3; // 修改第三行第三列为3
// 打印二维数组
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
程序的输出结果应该是:
```
1 0 0
0 2 0
0 0 3
```
解释一下代码:
首先定义了一个3*3的二维数组`matrix`,并且初始化为0。接着定义一个指针`p`,指向二维数组的第一个元素,即`matrix[0][0]`。通过移动指针的方式,修改了第一行第一列、第二行第二列和第三行第三列的值。最后通过双重循环打印出二维数组的值。
C语言写自定义一个二维数组 3*3,通过指针 + 循环的方式,修改第一行第一列为1,第二行第二列为2,第三行第三列为3。
可以使用以下代码实现:
```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)。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)