
C语言链表的问题,高手进来看一下哈!
#include<stdio.h>#include<stdlib.h>#defineNULL0voidmain(){structlinklist{intdata;char...
#include<stdio.h>
#include<stdlib.h>
#define NULL 0
void main()
{
struct linklist
{
int data;
char id[10];
struct linklist *next;
};
struct linklist *head,*p;
head=NULL;
p=(struct linklist *)malloc(sizeof(struct linklist));
scanf("%d",&p->data);
scanf("%d",&p->id);
}
问题一:head=NULL; head是指针变量,NULL也是指针变量; 那我奇怪了:既然是指针变量,那干嘛程序的开头会有:#define NULL 0;有了这个也就是说 给指针变量 head 赋值一个 “0” 这怎么可能!!!!!指针变量不是应该赋地址的吗????
问题二:最后面的那两个赋值语句应该改成这样吧:scanf("%d",p->data)
scanf("%d",p->id) 应该把它们的取址符 “&” 去掉吧! 因为 p 是指针变量,它里面存放的就是地址啊!!!所以就没必要加取址符了啊!!是吗?还是我理解错误????????? 展开
#include<stdlib.h>
#define NULL 0
void main()
{
struct linklist
{
int data;
char id[10];
struct linklist *next;
};
struct linklist *head,*p;
head=NULL;
p=(struct linklist *)malloc(sizeof(struct linklist));
scanf("%d",&p->data);
scanf("%d",&p->id);
}
问题一:head=NULL; head是指针变量,NULL也是指针变量; 那我奇怪了:既然是指针变量,那干嘛程序的开头会有:#define NULL 0;有了这个也就是说 给指针变量 head 赋值一个 “0” 这怎么可能!!!!!指针变量不是应该赋地址的吗????
问题二:最后面的那两个赋值语句应该改成这样吧:scanf("%d",p->data)
scanf("%d",p->id) 应该把它们的取址符 “&” 去掉吧! 因为 p 是指针变量,它里面存放的就是地址啊!!!所以就没必要加取址符了啊!!是吗?还是我理解错误????????? 展开
3个回答
展开全部
1,地址为0是可以的,代表无效地址
2,p->data要加&,p->id不用加
2,p->data要加&,p->id不用加
展开全部
答案一:地址是0.
答案二:->的优先级应该比&高
答案二:->的优先级应该比&高
追问
那 id 是数组名啊!应该不用加&了吧!???????????
追答
自己动手调试一下印象比较深~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
好好再翻一遍C
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询