【问题标题】:Double indirection双重间接
【发布时间】:2020-02-15 15:45:06
【问题描述】:

问题如下。 我有一个结构:

typedef unsigned int nat;

struct intervalo_t{
    nat fin;
    nat inicio;
};

我已经完成了以下操作(其中inter 是一个大小为n 的动态数组,其中加载了intervalo_t 类型的元素):

intervalo_t** aux=new intervalo_t*[n];
for (nat i=0; i<n; i++){
    aux[i]=inter[i];
}

我现在需要做的是显示inter[i].fin的内容,但我只能访问aux[i]。如果它们是原始类型(例如int),我会做类似printf("%d", **aux) 的事情,就是这样。有没有办法用上面定义的结构做类似的事情?

【问题讨论】:

  • aux[i]-&gt;fin 怎么样?
  • 成功了,谢谢
  • 如果我仔细阅读这个问题,我想你是说你有intervalo_t *inter 而不是intervalo_t **inter。我认为我在编辑问题时没有丢失任何*。如果是这种情况,aux[i] = inter[i]; 分配将是错误的。所以,大概inter 是一个指向intervalo_t 结构的指针数组。但无论哪种方式,如果您显示inter 的声明/定义,问题就会得到解决——说明它的元素已正确初始化的注释就可以了。

标签: c++ indirection


【解决方案1】:

inter[i] 的类型为intervalo_t*,因此您可以使用(*inter[i]).fininter[i]-&gt;finaux[i] 也是如此,它也是 intervalo_t*

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多