第一次提问,有点急请下载一下图片

img

img

用三级指针的原因是释放的是一个二维数组,而且最终要让外部知道二维数组被初始化赋值为空。为了修改外部的二维数组对象值,可以使用三级指针
第二种方法也可以释放空间,但是外部数组变量不知道,如果继续使用会出现野指针错误,解决方法是将函数返回值改为二级指针,在外部调用时将返回值赋值给传入的二维指针即可
修改如下:
char ** FreeStrings1(char **str1,char n)
{
...
return NULL;
}
char **str;
...//一顿分配空间
FreeStrings(&str,n); //方法1
str = FreeStrings1(str,n);//方法2