指针数组咋样表示二维数组
时间: 2024-01-12 15:22:30 浏览: 73
指针数组可以用来表示二维数组。下面是一个示例代码来演示如何使用指针数组表示二维数组:
```c
#include <stdio.h>
int main() {
int arr[3][4] = {{1,3,5,7},{2,4,6,8},{11,22,33,44}};
int *p[3]; // 指针数组的定义
for (int i = 0; i < 3; i++) {
p[i] = arr[i]; // 将指针数组的元素指向二维数组的每一行
}
// 使用指针数组来访问二维数组的元素
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
printf("%d ", *(p[i] + j));
}
printf("\n");
}
return 0;
}
```
这段代码中,我们定义了一个指针数组`p`,它有3个元素,每个元素都是一个指向整型的指针。然后,我们将指针数组的每个元素指向二维数组`arr`的每一行。最后,我们使用指针数组来访问二维数组的元素,并打印出来。
相关问题
二级指针指向指针数组再指向二维数组求元素之和
假设我们有一个二级指针 `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` 是一个整型数组,表示每个二维数组的列数。函数返回所有元素之和。
利用指向指针的指针或指针数组,计算二维数组的平均数
可以使用指向指针的指针或指针数组来计算二维数组的平均数,具体实现方法如下:
假设二维数组为arr,有m行n列,则可以定义一个指向指针的指针p,p指向一个长度为m的指针数组,每个指针指向一行元素,如下所示:
```
int **p = new int*[m];
for (int i = 0; i < m; i++) {
p[i] = arr[i];
}
```
也可以使用指针数组来实现,如下所示:
```
int *p[m];
for (int i = 0; i < m; i++) {
p[i] = arr[i];
}
```
然后,可以遍历二维数组,计算平均数,如下所示:
```
int sum = 0;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
sum += p[i][j];
}
}
double avg = (double)sum / (m * n);
```
其中,p[i][j]表示第i行第j列的元素,sum表示所有元素之和,avg表示平均数。
最后,记得释放指针数组的内存,如下所示:
```
delete[] p;
```
阅读全文
相关推荐












