为什么我们在Objective-C或C语言中使用双指针和三指针?

Tir*_*rth 3 c iphone objective-c

当我想要单指针时我感到困惑,何时我应该采用双指针?在以下结构中究竟做了什么?

struct objc_class {
    Class isa;
    Class super_class;
    const char *name;
    long version;
    long info;
    long instance_size;
    struct objc_ivar_list *ivars;
    struct objc_method_list **methodLists;
    struct objc_cache *cache;
    struct objc_protocol_list *protocols;
};
Run Code Online (Sandbox Code Playgroud)

为什么我们使用"**methodLists"双指针.

编辑 int sqlite3_get_table(sqlite3*db,
const char*zSql,
char***pazResult,
int*pnRow,
int*pnColumn,
char**pzErrmsg
); 在上面的场景中,三指针char***pazResult的含义是什么?

Eli*_*sky 6

好吧,至少在C中,双指针通常用于2D数组.最常见的2D数组可能是C字符串(char*s)的数组.有时也会使用双指针通过引用将指针传递给函数,但这不太可能在您发布的代码示例中使用.

根据名称,methodLists我猜这是一个列表数组.C中的(链接)列表通常由指向节点的指针表示,该指针objc_method_list可以是.然后用双指针实现这种列表的数组.