首页 > 解决方案 > 如何访问对结构的引用的引用的成员。(结构**)

问题描述

我对 C 编程很陌生。我在问自己如何访问双重引用结构的成员。(不确定你是否会这样命名。)

所以有这个简单的例子:

#include  <stdio.h>
#include  <string.h>

typedef struct {
    char n[4];
} inner;
typedef struct {
    inner inner[5];
} outer;


int main(void)
{
    outer o;
    strcpy(o.inner[0].n, "123");
    strcpy(o.inner[1].n, "ABC");
    
    // Working. Prints "123".
    printf("%s\n", o.inner[0].n);
    
    outer* oo = &o;
    
    // Working. Prints "123".
    printf("%s\n", oo->inner[0].n);
    
    outer** ooo = &oo;
    
    // Not working. Need help here, please.
    printf("%s\n", *ooo->inner[0].n);
    
    return 0;
}

如何访问outer** ooo. 我在最后一个 printf 语句中尝试了一些东西,但是没有用。

标签: c

解决方案


感谢@Ted Lyngmo 和@Ian Abbott。正确答案是:

(*ooo)->inner[0].n

或者

ooo[0]->inner[0].n


推荐阅读