二维数组和指向指针的指针

来源:互联网 发布:微软人工智能小冰 编辑:程序博客网 时间:2024/05/22 16:58

不能将二维数组赋值给指针的指针,如下面的例子是错误的

int arrray [2][3];int **pointer = array;  // errorpointer[0][1]= 1;

用指针向函数传递一个多维数组:

方法一,函数是 void fun(int arr[2][3]); 这种方法只能处理2行3列的int型数组。

方法二,可以省略第一维的长度。函数是 void fun(int arr[][3]);这种方式虽然限制宽松了一些,但是还是只能处理每行是3个整数长度的数组。

    或者写成这种形式 void fun(int (*arr)[3]);这是一个数组指针或者叫行指针,arr和*先结合使得arr成为一个指针,这个指针指向具有3个

    int类型数据的数组。

方法三,创建一个一维数组,数组中的元素是指向其他东西的指针,也即二级指针。函数是 int fun(int **arr);这种方法可以动态处理各行各列不一样长度的数据。

#include <iostream> using namespace std; void test(char **ptr) {     cout << *ptr << endl; }  int main() {     char *p[3] = {"abc", "def", "ghi"};     test(p);     return 0; }


0 0