关于int **

例子1:

 1 int foo(int *array)
 2 {
 3 
 4   array = (int *)malloc(sizeof(int)*5);
 5   return 0;
 6 }
 7 
 8 //外头调用
 9 int * uidArray = NULL;
10 foo(uidArray);

这时候我想要在函数里给数组指针赋值首个元素的地址,可是由于传的是参数,在函数里有地址了,可是在外头的变量uidArray还是等于NULL,等于没用。

所以必须传数组指针的指针进去,以修改外头的数组指针

改为:

1 int foo(int **array)
2 {
3    *array = (int *)malloc(sizeof(int)*5);
4    return 0;
5 }
6  
7  //外头调用
8 int ** uidArray = NULL;
9 foo(uidArray);

这里的int**是数组指针int *的指针

例子2:

1 int **arrays;
2 //创建一个2*6的二维数组
3 arrays = (int **)malloc(sizeof(int *)*2);
4 arrays[0] = (int *)malloc(sizeof(int)*6);
5 arrays[1] = (int *)malloc(sizeof(int)*6);

这里的int **是二维数组的指针

原文地址:https://www.cnblogs.com/vanishfan/p/3158204.html