2016-11-13 155 views
-3

不知道爲什麼,但我的函數不希望返回值。 這是我如何使用這個功能:C函數不返回列表值

struct element_listy *pakiet = NULL, *wsk = NULL; 
pakiet = dodaj_ramke(pakiet, &frame); 

這是功能:

struct element_listy* dodaj_ramke (struct element_listy *wskazanyelement, struct ramka *ramka){ 
    struct element_listy *wsk, *nowy; 
    if (wskazanyelement == NULL) { 
     wskazanyelement = (struct element_listy*)malloc(sizeof(struct element_listy)); //rezerwacja pamięci dla listy 
     wskazanyelement->ramka=(struct ramka*)malloc(sizeof(struct ramka)); //zalookowanie pamieci dla elementu listy 
     wskazanyelement->first = wskazanyelement; //Pierwszy element to lista obecna 
     wskazanyelement->next = NULL; // Drugi element nie istnieje 
     wskazanyelement->previous = wskazanyelement; //wskazanyelement->first->ramka; // poprzedni element to wskazanie na liste obecną 
     memcpy(wskazanyelement->first->ramka, ramka, sizeof(struct ramka)); //skopiowanie pod pierwszy element listy 
     return wskazanyelement; //zwróć liste 
    } else { 
     wsk = wskazanyelement; //pomocnicza lista dla listy 
     while (wsk->next != NULL) { //przechodzimy na koniec listy 
      wsk = wsk->next; 
     } 
     nowy = (struct element_listy*)malloc(sizeof(struct element_listy)); //lookowanie pamieci dla listy 
     nowy->ramka=(struct ramka*)malloc(sizeof(struct ramka)); //zalookowanie wskazanie na elementy listy 
     memcpy(nowy->ramka, ramka, sizeof(struct ramka)); //kopiowanie pod element listy 
     nowy->first = wskazanyelement; //pierwszy element pomocniczej to pobrana ramka 
     wsk->next = nowy; //następny element 
     wsk->previous = wsk; 
     return wskazanyelement; 
    } 
} 

在debuger我看到返回wskazanyelement具有ramka複製值。但是,當功能結束,我去下一步pakiet是空的。爲什麼?我在函數結尾處返回複製的數據。

+0

你應該通過指針或引用發送wskazanyelement。在你能否發送它的副本。功能應該是'結構element_listy * dodaj_ramke(結構element_listy * wskazanyelement,結構ramka * ramka)' –

+0

並請使其更容易,嘗試提交你的代碼中英文註釋和名稱,所以我們可以跟進 –

+0

什麼?我看到了這樣的第一次。並且編譯器返回「expect; or,or)」的錯誤。 我認爲這一定是別的,因爲在虛擬機上,相同的代碼可以解決問題。 –

回答

0

我修復了這個問題。這與指針沒有問題。就像我說的這個問題與海灣合作委員會。我必須降級,因爲升級開始問題。 我是一個gcc6。我將其刪除:

aptitude remove gcc-6 

但這刪除主GCC還,所以我必須currectly redefinie它

update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50 --slave /usr/bin/g++ g++ /usr/bin/g++-5 

清潔工程後,重建它,我的功能開始工作。