用指针数组求二维数组各个元素的和
时间: 2023-05-26 18:03:45 浏览: 80
下面是一种实现方法:
```c
int main() {
int a[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
int *p[3] = {a[0], a[1], a[2]};
int sum = 0;
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 4; ++j) {
sum += *(p[i] + j);
}
}
printf("sum = %d\n", sum);
return 0;
}
```
首先定义一个二维数组 `a[3][4]`,然后定义一个指针数组 `p`,其中每个指针指向二维数组的一行。在循环中,使用指针访问二维数组的每个元素,累加它们的值到变量 `sum` 中。最终输出 `sum` 的值即可。
需要注意的是,二维数组和指针数组都是用连续的内存空间来存储的,因此可以通过指针访问二维数组,这也是指针的高效性之一。
相关问题
利用指针数组求二维数组各行元素之和
可以通过如下代码来实现:
```c
#include <stdio.h>
int main() {
int data[3][4] = {{1, 2, 3, 4}, {2, 4, 6, 8}, {3, 6, 9, 12}};
int sums[3] = {0};
// 使用指针数组,对每行元素求和
for (int i = 0; i < 3; i++) {
for (int *p = &data[i][0]; p < &data[i][4]; p++) {
sums[i] += *p;
}
}
// 打印每行元素之和
for (int i = 0; i < 3; i++) {
printf("第 %d 行元素之和为:%d\n", i+1, sums[i]);
}
return 0;
}
```
以上代码中,我们定义了一个二维数组 `data`,其中存储了 3 行 4 列的数据。然后,我们定义一个一维数组 `sums`,用于存放每行元素之和。
使用指针数组,我们对每一行的元素进行遍历,并将元素之和累加到 `sums` 数组中。最后,打印出每一行的元素之和即可。
注意:以上代码中,我们使用了指针数组 `p`,其代表的是每一行的第一个元素的地址。使用指针数组的好处在于可以避免使用二维数组时需要使用行列索引的繁琐操作。
二级指针指向指针数组再指向二维数组求元素之和
假设我们有一个二级指针 `pp`,它指向一个指针数组,该指针数组的每个元素指向一个二维数组 `arr`。现在要求 `arr` 中所有元素的和,可以按照以下步骤进行:
1. 定义一个变量 `sum`,初始化为0,用于保存元素之和。
2. 使用两层循环遍历二维数组,将每个元素累加到 `sum` 变量中。
3. 遍历指针数组,对于每个指针,使用 `*` 运算符获取指向的二维数组,然后再次遍历该二维数组,将每个元素累加到 `sum` 变量中。
4. 返回 `sum` 变量的值。
下面是示例代码:
```c
int sum_elements(int** pp, int n, int* m) {
int sum = 0;
for (int i = 0; i < n; i++) {
int* p = pp[i];
for (int j = 0; j < m[i]; j++) {
sum += p[j];
}
}
return sum;
}
```
其中,`pp` 是指针数组,`n` 是指针数组的长度,`m` 是一个整型数组,表示每个二维数组的列数。函数返回所有元素之和。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![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)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)