函数指向二维数组的指针
时间: 2023-12-26 13:27:23 浏览: 31
函数指向二维数组的指针可以通过函数参数来实现。下面是一个例子:
```cpp
#include <iostream>
using namespace std;
void output(int (*p)[4]) // 形参是指向一维数组的指针变量
{
int i, j;
for(i=0; i<3; i++)
{
for(j=0; j<4; j++)
{
cout << *(*(p+i)+j) << " ";
}
cout << endl;
}
}
int main()
{
int a[3][4] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23};
output(a); // 多维数组名作函数参数
return 0;
}
```
输出结果为:
```
1 3 5 7
9 11 13 15
17 19 21 23
```
相关问题
函数返回二维数组指针
函数返回二维数组指针是指一个函数返回一个指向二维数组的指针。在C语言中,可以通过以下步骤来实现函数返回二维数组指针:
1. 首先,定义一个二维数组类型,例如int类型的二维数组:
```
typedef int (*ArrayPtr)[n];
```
这里的n表示二维数组的列数。
2. 然后,定义一个函数,该函数返回一个指向二维数组的指针:
```
ArrayPtr func() {
static int arr[m][n]; // 假设m表示二维数组的行数
// 对二维数组进行初始化或操作
return arr;
}
```
这里的m表示二维数组的行数。
3. 在主函数中调用该函数并使用返回的指针来操作二维数组:
```
int main() {
ArrayPtr ptr = func();
// 使用ptr指针来操作二维数组
return 0;
}
```
这样,通过函数返回二维数组指针,可以在其他函数中获取并操作该二维数组。
怎么让指针指向二维数组
在 C 语言中,可以通过以下两种方式让指针指向二维数组:
1. 使用数组名作为指针
例如,有一个二维数组 `arr`,可以使用以下代码让指针 `p` 指向该数组:
```
int arr[3][4];
int (*p)[4] = arr;
```
在上述代码中,`p` 是一个指向长度为 4 的 int 数组的指针,因此可以访问二维数组 `arr` 中的任意元素。
2. 使用动态分配内存的方式
可以使用 `malloc()` 函数动态分配内存来创建一个二维数组,并将其赋给指针。
例如,以下代码创建了一个 3 行 4 列的 int 类型二维数组,并将其赋给指针 `p`:
```
int **arr;
arr = (int **)malloc(3 * sizeof(int *));
for (int i = 0; i < 3; i++) {
arr[i] = (int *)malloc(4 * sizeof(int));
}
int (*p)[4] = arr;
```
在上述代码中,`arr` 是一个指向指针的指针,它指向一个包含 3 个指针的一维数组,每个指针指向一个包含 4 个 int 类型元素的一维数组。最后将 `arr` 赋给指针 `p`,使得 `p` 指向二维数组。