#include<stdio.h>
#include<malloc.h>
int i;
struct xx
{
int xhao;
struct xx *dd;
};
struct xx *a,*b,*c;
int main()
{
a=b=c=(struct xx *)malloc(sizeof(struct xx));
c->dd=a;
for(i=0;i<5;i++)
{
printf("输入");
scanf("%d",&a->xhao);
b->dd=0;
a->dd=b;
a=b;
}
a=c->dd;
for(i=0;i<5;i++)
{
printf("%d\n",a->xhao);
a=a->dd;
}
return 0;
}
你在分配内存空间时让a,b,c的动态分配内存地址相等了,后面进行除了更换地址的操作,无论怎样赋值这三个地址都不变,值一定相同,只要你把
a=b=c= struct xx *)malloc(sizeof(struct xx));做出改变就行了,分别分配内存空间就行了。