【发布时间】:2014-10-19 11:59:01
【问题描述】:
我有一个指针问题:
SearchResults* pointy;
pointy = returnResults();
if(pointy != NULL && pointy->results[0] != NULL)
{
HandleResponse();
printf("sharp");
}else{
//do other things
}
if(pointy == NULL){
printf("blunt");
}
if(pointy->results[0] == NULL){
printf("wah!!!");
}
在调试器中代码正常工作,我得到“尖锐”,但在 bash 终端中的相同条件下,我得到“哇!!!”
typedef struct SearchResults
{
TreeNode* results[40];
int searchIndex;
} SearchResults;
SearchResults* lostAndFound;
SearchResults* returnResults()
{
return lostAndFound;
}
【问题讨论】:
-
returnResults()在做什么? -
您是指标题中的
!=而不是==? -
我们将编写更多代码来识别该问题。或者至少你是如何调用程序的
-
Abhi 它是服务器(605 行)&& binaryTree(300 行)搜索功能的一部分,可以返回多个结果。 pointy->results[n] 应该是指向树节点的指针
-
肯定需要更多代码。如果程序超过 900 行,那么您需要将其缩小以隔离问题。你不能指望我们调试一个 900 行的程序,但当你只显示它的 25 行时肯定不会。我们不是魔术师。 “应该是指向树节点的指针”还不够好 - 它“应该”工作正常,但显然不是。