(L1).data,L1->data和L1区别?struct LNode *L1?
void list_headinsert(linklist &L1)
{
linklist s;
int x;
L1=(linklist)malloc(sizeof(LNode));
panduan1(L1);//判断头结是否分配内存了,把(*L1).next中的地址改为null。
printf("%d\n",L1->next);//改为null了
printf("%d\n",L1->data);//改为null了
scanf("%d",&x);
while(x!=999)
{
s=(linklist)malloc(sizeof(LNode));
s->data=x;
s->next=L1->next;
L1->next=s;
scanf("%d",&x);
}
printf("%d\n",L1->data);//改为null了
printf("%d\n",L1);//改为null了
printf("%d\n\n",L1->next);//改为null了
return;
}
int main()
{
linklist L1,L2;
list_headinsert(L1);
list_tailinsert(L2);
}
问题是: L1和L1->data的结果不一样,L1是解引用L1中存放的地址所对应的一块结构体空间的首地址,即(L1).data的内容,和L1->data是一个意思,应该值也是一样的才对。但是我这边结果不一样,不知道为什么,是我理解错了嘛。
前两个是一样的。实际上你的最后一个问题还是有点意思的。int* p = 1;这里星号p表示什么呢?意思是你可以拿到int的字节大小的数据,也就是4个字节的数据。那么再来看看星号Li,这会怎么办呢?答案就是拿到sizeof(LNodede)字节大小的数据,而Li->data只是看到sizeof(int)字节大小的数据而已。这自然不一样。
首先,如果L1是指针的话,(*L1).data,L1->data是一样的。
如果L1只是一个普通的结构体变量,直接L1.data访问即可。
普通变量用.,指针变量用->