二维指针

二维指针


一、什么时候用二维指针?

最近遇到的情况,假如某个函数需要通过函数指针的形式返回,调用函数里面的变量也是个指针,这个时候就需要用二维指针了。否则,当前环境下的变量会覆盖掉被调用函数里面指针的值。这种没有例子的解释似乎有点太抽象了。这个和《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

二、二维指针怎么用?

参考:


posted @ 2016-09-07 17:44  xiulug  阅读(500)  评论(0编辑  收藏  举报