指针使用前必须初始化

在指针的使用过程中,是最容易出现问题的。就像今天,我本来进行基数排序,但是,因为存储时用数组的,所以导致排序100000的时候,内存提示不足,因此,对于队列的使用,我就想到了使用链式存储。但是,当使用链式存储的时候,一直提示内存不足,把排序数目调到10的时候,也是如此,因此我想到了是程序改出了问题。

下面是定义的结构:

typedef int DataType;

typedef struct queue

{

   DataType data;

   struct queue * next;

}QueueNode;

typedef struct

{

   QueueNode *head,*rear;

   int count;//结点数目

}LinkQueue;


 

下面是队列的初始化:

void InitQueue(LinkQueue *q)
{
	q->head->next=NULL;
	q->rear->next=NULL;
	q->count=0;
}

可以看到在初始化的时候,我们就使用了q->head,并让它的next指向为空,这一句话就是说,我们的q->head在内存中是分配单元的。于是,在程序使用InitQueue来初始化队列的时候,我们必须首先要做的就是为q(指向这个队列)和q->head(头结点)分配存储空间,不然它们的初始化就无法完成。

于是我想到,使用指针的时候,如果我们要使用它的下一个结点(p->next)亦或者是该结构体中的某一个指针(例如:q->head)的话,必须要保证它已经有了自己的存储空间了。

也就是说,如果需要指针的指向的话,那么该指针必须是已经有了自己的内存空间。


 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值