这是我的代码:
Activeworkbook
我将我的功能称为:
Userform
编辑:我编辑了我的代码以添加main方法。
问题是,当我将spz传递给另一个方法后,它为null,这意味着我必须在方法n()中使用它作为三重指针,但是当我在方法n中的每个spz之前添加星号时它不起作用。您有任何想法如何解决这个问题吗?
答案 0 :(得分:1)
当您调用某个函数时,您将spz
变量的副本从main()
函数传递到spz
中的n()
变量功能。然后,n()
中的分配仅影响其本地spz
。
如果要返回指针值,则需要将指针传递给变量,例程必须取消引用指针才能到达原始变量:
void n( char ***spz_ptr) // a pointer to (char **) variable
{
*spz_ptr // dereferenced pointer. i.e. the main's spz
= malloc( ... );
}
void main()
{
char **spz;
n( & spz ); // pass a pointer to spz
if( spz == NULL) { // test the value assigned by n()
.... // handle the error
}
else {
.... // proceed with actual work
}
}