为什么我不能使用 - > main中的struct指针的运算符?

时间:2014-01-24 23:51:50

标签: pointers dot-operator

我认为一般的经验法则是 - >运算符用于访问struct指针的成员,以及。 operator用于访问实际struct的成员。在我的代码中,我以为我创建了一个结构指针,但我最终仍然需要使用。运营商。有人可以解释原因吗?

typedef struct Robot
{
    char **brain;
    int size;
} Robot;

int main(void)
{
    char buffer[100];
    Robot *dalek = malloc(sizeof(Robot)*2);

    for(i = 0; i < 2; i++)
        dalek[i].brain = malloc(sizeof(char*) * 3);

    for(i = 0; i < 3; i++)
    {
        scanf("%s", buffer);
        dalek[0].brain[i] = malloc(sizeof(char) * strlen(buffer));
        strcpy(dalek[0].brain[i], buffer);
    }
}

2 个答案:

答案 0 :(得分:2)

dalek是一个指针,dalek[i]相当于*(dalek + i),即它取消引用。如果您想使用箭头,请说出(dalek + i)->brain

答案 1 :(得分:0)

dalek[i]定义为*(dalek+i)。因此,当您执行dalek[i]->brain时,您确实正在执行*(*(dalek+i)).brain,将两个指针解除引用。如果您确实想使用->运算符,可以使用(dalek+i)->brain