我认为一般的经验法则是 - >运算符用于访问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);
}
}
答案 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
。