求前辈指导一下结构体+指针是什么意思

我找了个电话薄应用的程序,有些地方看不懂结构体是#defineIDstructidstructid{charname[20];chartele[20];ID*next;《... 我找了个电话薄应用的程序,有些地方看不懂
结构体是
#define ID struct id
struct id
{
char name[20];
char tele[20];
ID *next; 《《==这里不太懂,是什么意思
};

还有底下是这个他的一个键入函数
这里有些不懂
ID *creat()
{
ID *p1,*p2,*head; 《==这里是什么意思?只是单独定义3个指针吗?ID写在最前边是做什么?
char str[20];
p1=p2=head=NULL;
ID *creat()
{
ID *p1,*p2,*head;
char str[20];
p1=p2=head=NULL;
printf("\t\t\t 开始输入记录(姓名 # 结束)!\n");
while(1)
{
printf("请输入姓名:\n");scanf("%s",str);getchar();
if(strcmp(str,"#")==0) break;
p1=(ID*)malloc(sizeof(ID));
strcpy(p1->name,str);
printf("请输入电话号码:\n");scanf("%s",p1->tele);getchar();

if(head==NULL)
{
head=p1;
p2=p1;
}
else
{
p2->next=p1;
p2=p1;
}
pc++;
}
p2->next=NULL;
return(head);
}
展开
 我来答
沐云棠E
2012-05-28 · 超过10用户采纳过TA的回答
知道答主
回答量:137
采纳率:0%
帮助的人:14.6万
展开全部
第一个《==:是链表的指针与下一个指针连接的指针。如:p->next =p1,即p和p1 指针就连接起来了;
第二个《==:是定义的三个指针,其中head是头指针,下面很多函数调用链表时只需要传递头指针 就可以了。p1 和p2 一个是两个建立链表用的指针,一个新建用于存值,另一个负责连接传递;ID 是由于 #define ID struct id 将 struct id 这个结构体与一个新的名字ID 代替。所以ID 在这里 就是定义三个struct id 结构类型的指针。
更多追问追答
追问
首先感谢一下,能在帮忙读下这个键入函数吗?见问题补充
追答
这是个建立链表的函数:
ID *creat()
{
ID *p1,*p2,*head; //首先定义三个指针
char str[20];
p1=p2=head=NULL; // 令其初始化为空
printf("\t\t\t 开始输入记录(姓名 # 结束)!\n");
while(1)
{
printf("请输入姓名:\n");scanf("%s",str);getchar();
if(strcmp(str,"#")==0) break; //当你输入的姓名为#时结束循环 跳出while循环,
p1=(ID*)malloc(sizeof(ID)); //为p1分配内存
strcpy(p1->name,str); //将你输入的名字赋值到结构体指针里;
printf("请输入电话号码:\n");scanf("%s",p1->tele);getchar();
if(head==NULL)
{
head=p1;
p2=p1;
}
else
{
p2->next=p1;
p2=p1;
}
pc++;
}
p2->next=NULL;
return(head);
}

不知道你哪不懂,就说这些吧。。。
匿名用户
2012-05-28
展开全部
ID就是struct id ,是一个结构体的数据类型,和int类似,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式