例子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 **是二维数组的指针