#理解##二级指针#
int main()
{
int **pp;
int *p;
int **pp2;
*pp = (int*)malloc(sizeof(int) * 15);
p = (int*)malloc(sizeof(int) * 15);
pp2 = (int**)malloc(sizeof(int*) * 15);
return 0;
}
*pp 与 p等价,可以表示一个长度15的数组
pp2为二级指针,可以理解为一个长度15的指针数组,每个格子装的是一个(int *)指针。
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pRoot TreeNode类
* @return int整型二维数组
* @return int* returnSize 返回数组行数
* @return int** returnColumnSizes 返回数组列数
*/
int** Print(struct TreeNode* pRoot, int* returnSize, int** returnColumnSizes ) {
// write code here
}
其中int** returnColumnSizes;传入二级指针。
1.调用函数无法得知需要多大的内存,否则可以直接传入一个指针数组。
2.针对returnColumnSizes修改,上层调用函数是无法感知的。因此要对(*returnColumnSizes)进行修改。
3.此处 int **returnColumnSizes 可以等价于 int *pArray。 与int *pArray同理。可以使用pArray = (*returnColumnSizes);
查看2道真题和解析