利用指针求数组各行的和
时间: 2023-07-20 17:14:56 浏览: 55
假设有一个二维数组`arr`,可以通过以下代码利用指针求出数组各行的和:
```c
int row, col;
int sum;
int *ptr;
// 计算各行的和
for(row = 0; row < ROWS; row++) {
sum = 0;
ptr = arr[row];
for(col = 0; col < COLS; col++) {
sum += *(ptr + col);
}
printf("第%d行的和为%d\n", row + 1, sum);
}
```
在这段代码中,我们首先定义了行数`row`、列数`col`、每行的和`sum`和指向每行开头的指针`ptr`。然后,我们使用两个`for`循环遍历整个数组,对于每一行,我们都将指针`ptr`指向该行的开头,然后依次遍历该行的每一列,将各个元素的值加起来,最终得到该行的和`sum`。最后,我们输出该行的和`sum`即可。
相关问题
利用指针求数组各行和
假设有一个二维数组 `arr`,可以使用指针来求出每一行的和。具体实现如下:
```c++
int row_sum(int *p, int cols) {
int sum = 0;
for (int i = 0; i < cols; i++) {
sum += *(p + i);
}
return sum;
}
void get_row_sums(int *arr, int rows, int cols, int *sums) {
for (int i = 0; i < rows; i++) {
*(sums + i) = row_sum(arr + i * cols, cols);
}
}
```
其中,`row_sum` 函数是用来求出一行的和的,`get_row_sums` 函数则是用来求出所有行的和并存储到 `sums` 数组中。在 `get_row_sums` 函数中,我们使用了指针算术运算来获取每一行的起始地址,然后调用 `row_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`,其代表的是每一行的第一个元素的地址。使用指针数组的好处在于可以避免使用二维数组时需要使用行列索引的繁琐操作。
相关推荐
![](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)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)