
有关C语言数据结构单链表的问题
为什么单链表中表初始化中的参数是指针的指针?还有if括号里的语句也没看懂voidListInitiate(SLnode**head){if((*head=(SLNode*...
为什么单链表中表初始化中的参数是指针的指针?
还有if括号里的语句也没看懂
void ListInitiate(SLnode **head)
{
if((*head=(SLNode *)malloc(sizeof(SLNode)))==NULL) exit(1);
(*head)->next==NULL;
}
恳请哪位热心人士解说一下,谢谢! 展开
还有if括号里的语句也没看懂
void ListInitiate(SLnode **head)
{
if((*head=(SLNode *)malloc(sizeof(SLNode)))==NULL) exit(1);
(*head)->next==NULL;
}
恳请哪位热心人士解说一下,谢谢! 展开
3个回答
2010-02-12
展开全部
因为malloc()有可能出现分配空间失败的情况,当分配失败时,malloc()将返回NULL,而只有在malloc()分配成功的情况下,对为head分配的空间进行操作才有意义,if语句就是检查head的空间有没有分配成功,如果分配失败,就会直接退出程序,而不会执行 (*head)->next==NULL;
展开全部
我分别回答你的两个问题:
1.关于链表初始化函数的参数
采用指向指针的指针很有可能是在声明链表结点结构以及定义结点变量时出现如下类似情况:
struct SLnode
{
int data;
SLnode* next;
}*array[10];
相当于定义了一个指向SLnode类型,包含10个指针的指针数组,这样在对这10个指针进行初始化时,array就作为函数实参,它是个指向指针的指针
2.关于malloc
malloc函数返回结果是申请到的动态内存首地址。当然,申请过程是有可能失败的,这样就会返回一个空指针,if语句就是判断*head是否成功申请到了内存
有问题我们可以交流哈
1.关于链表初始化函数的参数
采用指向指针的指针很有可能是在声明链表结点结构以及定义结点变量时出现如下类似情况:
struct SLnode
{
int data;
SLnode* next;
}*array[10];
相当于定义了一个指向SLnode类型,包含10个指针的指针数组,这样在对这10个指针进行初始化时,array就作为函数实参,它是个指向指针的指针
2.关于malloc
malloc函数返回结果是申请到的动态内存首地址。当然,申请过程是有可能失败的,这样就会返回一个空指针,if语句就是判断*head是否成功申请到了内存
有问题我们可以交流哈
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
malloc是动态地址请求
首先因为它是请求 所以存在是否能得到所请求的地址这一问题
if里面的就是说 如果请求道的是null那么程序就不用接下去了
首先因为它是请求 所以存在是否能得到所请求的地址这一问题
if里面的就是说 如果请求道的是null那么程序就不用接下去了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询