二维指针
一、什么时候用二维指针?
最近遇到的情况,假如某个函数需要通过函数指针的形式返回,调用函数里面的变量也是个指针,这个时候就需要用二维指针了。否则,当前环境下的变量会覆盖掉被调用函数里面指针的值。这种没有例子的解释似乎有点太抽象了。这个和《C和指针》这本书中提到的传值和传地址是同一个问题。下面就来几个例子:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int newtext(int len, char **text)
{
char *tmp = (char *)malloc(len);
if(tmp==NULL)
return -1;
else{
*text = tmp;
return 0;
}
}
int main()
{
char *str;
int len = 10;
int ret;
ret = newtext(len, &str);
if(ret == -1)
return -1;
free(str);
}
上面的代码中,假如函数newtext()
的参数用的不是char **text
,而是char *text
,那么结果free()
会segment fault
。
二、二维指针怎么用?
参考: