C++函数返回二维数组
一个函数返回二维数组的方法有两种:
第一种:
<span style="font-size:14px;">int (*f())[10] { int (*p)[10] = new int[10][10]; int start = 0; for (int i = 0; i < 10; i++) for (int j = 0; j < 10; j++) p[i][j] = start++; return p; }</span>
首先解释一下函数的声明:
f():说明f是一个无参的函数;
(*f()):说明我们可以对调用f的结果进行解引用;
(*f())[10]:解引用的结果是一个数组,包含十个元素;
int (*f())[10]:元素的类型为int。
这就说明f的返回值是一个指向有十个元素的数组的指针。二维数组本质上也是一个数组,只不过它的元素也是数组而已,所以可以用返回一个指向数组的指针来表示返回一个二维数组。
int (*p)[10] = new int[10][10];
用new操作符产生二维数组的方法。此处new的返回值类型是指向数组的指针,而不是int**。以下是调用演示:
int main() { int (*p)[10]; p = f(); for (int i = 0; i < 10; i++) for (int j = 0; j < 10; j++) cout << p[i][j] << endl; system("pause"); return 0; }
第二种:
使用指向指针的指针,
int **f() { int **p = new int*[10]; int n = 0; for (int i = 0; i < 10; i++) { p[i] = new int[10]; for(int j = 0; j < 10; j++) p[i][j] = n++; } return p; }
调用:int** p = f();
注意的一点就是int** 和 int(*p)[]不能相互替换,虽然都可以以p[i][j]的方式使用。
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 求字符在字符串中出现的次数
- 下一篇: php统计所有字符在字符串中出现的次数