在 c 中,如何在没有“->”的情况下访问 属性?

How is it possible to access property without "->" in c?

我已经学习 c 一段时间了,假设我认为我对指针有很好的理解,尽管这个例子让我很烦。

假设我们有一个数组,其中每个元素都指向一个结构。如果我们为两个元素分配 space,如下例所示:


p = (test**)malloc(2*sizeof(test*));

p[0] = (test*)malloc(sizeof(test));
p[1] = (test*)malloc(sizeof(test));

结构测试如下:

typedef struct {
    char *t;
    long long p;
} test;

现在,当我为如下变量赋值时:

(*p)[1].t = (char*)malloc(10*sizeof(char));
strcpy((*p)[1].t, "test");
(*p)[1].p = 10;

p[1]->t = (char*)malloc(10*sizeof(char));
p[1]->p = 20;
strcpy(p[1]->t, "test34e");

它们填充了完全不同的内存块。在此示例中,我如何才能访问 属性 t (*p)[1].t?

看来你的意思如下

(*p[1] ).t = (char*)malloc(10*sizeof(char));
strcpy( ( *p[1] ).t, "test");
( *p[1] ).p = 10;

也就是p[1]是一个指针。因此,您可以编写例如 p[1]->t 或取消引用指针并获取结构类型 ( *p[1] ).t.

的指向对象