我遇到了问题。内部函数“pop”中,int rezultat具有正确的值,但在外部,为0.我不知道C++,但我必须为学校做这件事,花了我2个小时,我不知道我在做什么错误... 请帮忙。函数返回错误的数字C++
#include <iostream>
int rezultat;
struct stosik {
int x;
stosik *next;
};
void push(stosik* &stos, int x) {
stosik* tymczasowy = new stosik;
tymczasowy->x = x;
tymczasowy->next = stos;
stos=tymczasowy;
delete tymczasowy;
}
bool isEmpty(stosik* stos){
return stos != NULL;
}
//[email protected]@@@@@@@@@@@@@@@@@@@@@@
bool pop(stosik* &stos, int rezultat){
if (!isEmpty(stos)) {
return false;
}
stosik* tymczasowy = stos;
rezultat = tymczasowy -> x;
if(stos->next !=NULL){
tymczasowy = stos -> next;
stos=tymczasowy;
}
else {
std::cout << "Nic" << std::endl;
}
// delete tymczasowy;
std::cout <<"Rezultat na koncu dziala funkcji "<<rezultat << std::endl;
return true;
}
bool topEl(stosik* &stos, int* result, int mekeke){
if (isEmpty(stos))
{
return false;
}
*result = stos ->x;
mekeke=*result;
return true;
}
int main(){
stosik* stos_roboczy=NULL; // deklaracja stosu, domyślnie NULL
std::cout << "0 empty, 1 something "<< std::endl;
std::cout << isEmpty(stos_roboczy) << std::endl;
std::cout << "" << std::endl;
push(stos_roboczy, 5);
push(stos_roboczy, 15);
push(stos_roboczy, 25);
std::cout << "0 empty, 1 something<<std::endl;
std::cout << isEmpty(stos_roboczy) << std::endl;
std::cout << "" << std::endl;
//AND HERE @@@@@@@@@@@@@@@@@@@@@@@
pop(stos_roboczy, rezultat);
std::cout <<"Wrong result after function: "<<rezultat << std::endl;
//
// pop(stos_roboczy, rezultat);
// pop(stos_roboczy, rezultat);
//
// std::cout << rezultat << std::endl;
}
你是什么意思错号?你回复真假,你还有什么期望?作为未来的技巧,用英语编程。这是通用编程语言。 –
我的意思是整数“rezultat”。它被声明为全局的,在弹出函数里它有一个由“rezultat = tymczasowy-> x”赋值的值,里面是正确的(25),但是在“main()”的下一行中,值是“0”。像这样:http://imgur.com/j5NtVJI – Mulaczos
我推荐使用调试器和单步执行代码。另外,当每个语句执行时,打印变量值或*观察它们。 –