二级指针就是指向指针的指针,一般用于函数内部对指针进行创建、赋值等操作。
例:
void Func1(int ** ip)
{
*ip = new int[4];
for (int i = 0; i < 4;)
(*ip)[i] = i++;
}
void Func2(char * pc)
{
pc = "func in";
}
int main()
{
char * pc = "func out";
Func
Func2(pc);
printf("%s \n", pc);
int * ip;
Func1(&ip);
for (int i = 0; i < 4;)
printf("%d \n", ip[i++]);
return 0;
}
运行结果:
针对Func2,函数会申请临时变量来代替传入的参数,也就是说Func2在执行如下代码:
char * temp = pc;
temp = "func in";
所以最后并没有改变外部指针指向的存储空间。
针对Func1,传入二级指针,在函数内部申请内存并赋值,可以把指针的数据导出到函数外部。
一般二级指针常用于在函数内部对外部指针进行存储空间申请和赋值操作,如对句柄操作等。