C函数不返回列表值

时间:2016-11-13 15:24:26

标签: c struct return-value

不知道为什么但是我的函数不想要返回值。 这是我使用此功能的方式:

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 是空的。为什么?我在函数结束时返回复制的数据。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。这不是指针的问题。就像我说这个我与gcc的问题。我必须降级这个因为升级开始问题。 我是gcc6。我删除了它:

aptitude remove gcc-6

但这也删除了主要的gcc,所以我必须重新确定它

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

在清理项目并重建之后,我的功能正在开始工作。