我遇到了問題。內部函數「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
我推薦使用調試器和單步執行代碼。另外,當每個語句執行時,打印變量值或*觀察它們。 –