0

I have a struct variable

      struct Var var;

and a function which is from a library

      void func(struct Var ** ){}

now I want to call this function can I use

      func(&&var);

if so, is there anything to be cautious? if not, any solutions?

thanks!

4

4 回答 4

5

具有类型参数的函数T**可能会将指针重新分配给不同的值。这意味着T*必须传入 a 的地址:

struct Var* var;
func(&var);

void func(struct Var ** a_var)
{
    *a_var = malloc(sizeof(struct Var));
}
于 2013-04-18T10:15:33.537 回答
2

运算符获取表达式的地址,该&地址必须是左值(即可以出现在赋值左侧的东西)。&var表达式不能出现在赋值的左侧,因此不允许使用&varin的地址。& (&var)

为了传递地址的地址,您需要首先创建一个指针变量,将事物的地址分配给该指针,然后传递指针的地址,如下所示:

struct Var myVar; // Initialize myVar
struct Var *ptr = &myVar; // First level of indirection - pointer to struct
func(&ptr); // Second level of indirection - pointer to a pointer
于 2013-04-18T10:21:23.383 回答
2

您可以通过以下声明来使用它:

struct Var *var;
func(&var);

情况:在这些例子中,您在一个函数中声明指针变量并allocatefunc()

于 2013-04-18T10:14:06.467 回答
0

作为双指针传递参数通常用于获取传递指针的新地址。在您的情况下,您正在传递静态变量的地址,因此它的地址不会改变

于 2013-04-18T10:17:19.793 回答