标题:结构体问题
只看楼主
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
结帖率:95.37%
已结贴  问题点数:20 回复次数:15 
结构体问题
#include<stdio.h>
typedef struct student
{
    int a;
}stu;
typedef struct Node
{
    stu date;
    struct Node *p;
}node,*LinkList;
int main()
{
    LinkList head;
    scanf("%d",&head->date->a);
    printf("%d\n",head->date->a);
    return 0;
}
scanf("%d",&head->date->a);
    printf("%d\n",head->date->a);总是提示这两行报错
((*head).date.a这样就不错了 这是为什么?
搜索更多相关主题的帖子: 结构体 struct Node date head 
2017-09-26 14:14
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 
给head分配空间
2017-09-26 14:16
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
    LinkList head=(LinkList)malloc(sizeof(node));
    scanf("%d",&head->date.a);
    printf("%d\n",head->date.a);
2017-09-26 14:23
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
得分:0 
回复 3楼 吹水佬
在head->date.a 中 用.a的原因是stu不是指针类型,对吗?
2017-09-26 14:33
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用花脸在2017-9-26 14:33:25的发言:

在head->date.a 中 用.a的原因是stu不是指针类型,对吗?

是的
2017-09-26 15:35
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
得分:0 
回复 5楼 吹水佬
#include<stdio.h>
#include<stdlib.h>
#define len sizeof(node)
typedef struct student
{
    int a;
}stu;
typedef struct Node
{
    stu date;
    struct Node *next;
}node,*LinkList;

//初始化空链表
void InitList(LinkList *L)
{
    *L=(LinkList)malloc(len);
    (*L)->next=NULL;                              //(*L)
}
void CreateFormHead(LinkList L)
{
    node *p;
    int flag=1,b;
    while(flag)
    {
        scanf("%d",&b);
        if(b!=0)
        {
            p=(node*)malloc(len);
            p->date.a=b;
            p->next=L->next;
            L->next=p;
        }
        else
            flag=0;//跳出while循环  
    }
}
int main()
{
    LinkList L;
    InitList&L);
    CreateFormHead(L);
    free(L);
    return 0;
}
(*L)->next=NULL; 为什么用L->next=NULL;不行?

[此贴子已经被作者于2017-9-26 18:11编辑过]

2017-09-26 17:59
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用花脸在2017-9-26 17:59:00的发言:

//初始化空链表
void InitList(LinkList *L)
{
    *L=(LinkList)malloc(len);
    (*L)->next=NULL;                              //(*L)
}

(*L)->next=NULL; 为什么用L->next=NULL;不行?

LinkList *L 与 LinkList L 的区别。
LinkList *L 时就用 (*L)->next=NULL;
LinkList L 时就用 L->next=NULL;
2017-09-26 21:06
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
得分:10 
void InitList(LinkList *L)  (参数是指向指针的指针)
以下是引用花脸在2017-9-26 17:59:00的发言:

typedef struct Node
{
    stu date;
    struct Node *next;
}node,*LinkList;

//初始化空链表
void InitList(LinkList *L)
{
    *L=(LinkList)malloc(len);
    (*L)->next=NULL;                              //(*L)
}

int main()
{
    LinkList L;
    InitList&L);
    CreateFormHead(L);
    free(L);
    return 0;
}
(*L)->next=NULL; 为什么用L->next=NULL;不行?

早知做人那么辛苦!  当初不应该下凡
2017-09-26 21:44
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
得分:0 
回复 7楼 吹水佬
好的 谢谢。
2017-09-26 21:57
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
得分:0 
回复 8楼 炎天
*L是结构体的指针,对不对、?如果是**L用(**L).data
2017-09-26 22:05



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-480961-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030043 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved