重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
指针变量中存储的也是一个值, 比如子函数收到传递来的参数值为:3647829, 可以是数值, 也可以是指针地址, 就看你子函数定义成什么类型的参数
目前创新互联已为1000多家的企业提供了网站建设、域名、网络空间、成都网站托管、企业网站设计、双辽网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
intcmp是和GetKeyFunc_t对应起来的。
而你现在错在了CmpFunc_t这个函数参数上了。
你把怎样的函数参数指针传给了BST_t *newBST?
你没交代清楚啊,你把错误指针传给newBST函数的第一个参数,编译器肯定报错了。你给了那么多代码,关键你把什么传给了BST_t *newBST的第一个参数?给一下你调用这个newBST函数的代码,而且要你传给该函数第一个参数的参数定义。
另外给个建议:定义函数时,记得对传进来的参数进行合法性检验。多加几行代码是很有必要的,能增强函数的健壮性。(微软也好,ISO也好,都对大部分函数设计时要求做必要的合法检验)
你的地址值传递错误,按照我给你修改的试试看,一定要注意你的实参传递的是地址还是具体的值,如果是地址,在子函数中就不要去修改你传递进来的地址。
int
main(void)
{
int
data=0;
//此处随机分配内存空间,不要用指针
myStack=makeStack(myStack,top);
Push(myStack,3);
Push(myStack,8);
Push(myStack,19);
Push(myStack,31);
Push(myStack,43);
Push(myStack,36);
Pop(myStack,data);//此处,传递的是地址值
printf("%d
",data);
}
int*
Pop(LinkedStack
myStack,int
*data)
{
pStack
cursor=myStack;
if(Stack_Empty())
{
}
else
{
while(cursor-next!=top)
{
cursor=cursor-next;
}
*data=top-data;
//此处,只是在同一个内存空间修改其值,所以不要取地址
top=cursor;
return
data;
}
}