一个局部指针的问题:局部指针在不同的块不能共用?

2015-01-25 22:27:32 +08:00
 EchoChan

//具有插入功能的查找(非递归)
void BSTree::inst1(Sstudent el)
{
BTreeNode *p,*q;
int tag;
tag=0;
p=root;
while ((p != NULL)&& (tag == 0))
{
q= p;
if (el < p->data)
p=p->lchild;
else if (el > p->data)
p=p->rchild;
else
tag=1;
}
if (tag == 0)
{

p=new BTreeNode(el,NULL,NULL);
if (root==NULL) root=p;
else if (el < q->data) q->lchild= p;
else q->rchild=p;
}
}

刚才在VS2013编译的时候,提示 error C4703: potentially uninitialized local pointer variable 'q' used (22行)。
q的作用范围不是整个函数吗?

2247 次点击
所在节点    程序员
2 条回复
heliumhgy
2015-01-25 22:40:46 +08:00
错误是q可能会是一个未初始化的指针啊,如果while没执行,q就没有指向一个合法的内存空间啊,然后else分支里赋值就不行了
EchoChan
2015-01-26 09:30:57 +08:00
@heliumhgy 原来如此,谢谢啊,我没注意while没执行的情况。这句是从书上的模板改的。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/165383

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX