main()
{
i *s;//这一句铅友不会分配结构体空间,只是定义了一个指针而已
改成:
i iStu;
s = &iStu;
s->h->f->d->b->data=9;
printf("%d\n",s->h->槐悄槐运搭f->d->b->data);
}
s,以灶尺及s里面的h,f,d,b这些指针都没有分配内存
i *s = (i*)malloc(sizeof(i));
s->h = (g*)malloc(sizeof(g));
....
都分配好内存了谨差才能写隐晌高
s->h->f->d->b->data=9;
同意一楼,报错说明你越界访问~
s只是一个指针,没有被分配空间
二楼首樱旦正解
typedef struct
{
int data;
}a;
typedef struct
{
a *b;
}c;
typedef struct
{
c *d;
}e;
typedef struct
{
e *f;
}g;
typedef struct
{
g* h;
}i;
#include
#include <颂芹malloc.h>
void main()
{
i *s = (i*)malloc(sizeof(i));
s->h = (g*)malloc(sizeof(g));
s->h->f = (e*)malloc(sizeof(e));
s->h->f->d = (c*)malloc(sizeof(c));
s->h->f->d->b = (a*)malloc(sizeof(a));
s->h->f->d->b->data=9;
printf("%d\n",s->h->f->d->b->data);
}