用二维指针编写接口可以避免有些类型的return出错的问题
#include <stdio.h> void test(char **string) { *string = "hello world"; } int main() { char *str = NULL; test(&str); printf("str=%s\n",str); getchar(); return 0;
结果:
具体分析如下图:
过程:
1.定义一个字符串指针str,str本身的地址是100,值为0(即NULL,一般的编译器NULL的地址是0)。
2.取str的地址100传给string,此时string的值是100,地址为200
3.这里假设“hello world”字符串的地址是300,接下来就是改变一级指针指向的内容的地址,由0变成300