【问题标题】:Converting a pointer to a double pointer in C在C中将指针转换为双指针
【发布时间】:2021-01-08 04:21:53
【问题描述】:

我想调用具有以下签名的方法。

error (*handler)(obj **, const char *, void*)

因为context变量是指针,所以需要转换成指向指针的指针。但是,按照以下方式执行此操作会引发编译错误gfserver.c:185:20: error: invalid type argument of unary ‘*’ (have ‘gfcontext_t {aka struct gfcontext_t}’)。这个指针如何转换为双指针?

obj *context = (obj *)malloc(sizeof(obj)); 
m->handler(**context, request, handlerarg);

【问题讨论】:

    标签: c pointers memory-management


    【解决方案1】:

    对于任何指针(或数组)p 和索引i,表达式*(p + i) 完全等于p[i]。由此可知*p 等于p[0]

    放入您问题的上下文(不是双关语),**context 将等于 context[0][0],这是没有意义的。

    看来您应该使用地址运算符& 来获取指向该指针的指针。如&context

    【讨论】:

      猜你喜欢
      • 2020-12-10
      • 1970-01-01
      • 2013-02-20
      • 1970-01-01
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      • 2021-09-20
      相关资源
      最近更新 更多