C/C++中一般用二级指针作为函数参数,
- 需要传递一级指针的数组时
例如:
标准C的main函数
int main(int argc,char*[] argv)
{
return 0;
}
数组最高维可以退化,即char*[] argv
等价于char** argv
argv代表命令行参数数组
- 需要对传入的一级指针进行修改时
例如:
#include <stdio.h>
#include <stdlib.h>
void alloc_new_char_array(int n,char** t)
{
*t=(char*)malloc(n*sizeof(t));
*t="123";
}
int main() {
char* t;
alloc_new_char_array(5, &t);
printf("%s", t);
return 0;
}
当然,这里可以通过返回值达到相同的效果。
#include <stdio.h>
#include <stdlib.h>
char* alloc_new_char_array(int n,char* t)
{
t=(char*)malloc(n*sizeof(t));
t="123";
return t;
}
int main(int argc,char*[] argv)
{
char* t;
t=alloc_new_array(5,t);
printf("%s", t);
return 0;
}
不过需要同时修改多个指针的时候就不能用返回值。
C语言不允许返回多值。
C++可以用引用代替二级指针,本质上与上面相同