• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Błąd l-value

VPS Starter Arubacloud
0 głosów
175 wizyt
pytanie zadane 17 października 2015 w C i C++ przez Newtonik Gaduła (3,660 p.)
#include <iostream>
using namespace std;
int main ()
{
    int ti[6];
    double ta [6];

    int *wsk_1;
    double *wsk_2;
    wsk_1 = &ti[0];
    wsk_2 = &ta[0];

cout << "Przez petle pokazemy adresy wskaznikow w tablicy\n";
    for(int i = 0; i < 6 ;i++, ti++, ta++)
    {
        cout << "i: " << i
            << "ti = "
            << reinterpret_cast<unsigned int>(ti)
            << "ta = "
            << reinterpret_cast<unsigned int>(ta) << endl;
    }
}

 

Kompilator wyrzuca wartość lvalue w petli for, a dokłaadnie chodzi o inkrementacje ti++ i ta++. Nie wydaje mi się aby był tam błąd. Dzięki za wszelką pomoc.

2 odpowiedzi

+1 głos
odpowiedź 18 października 2015 przez Radfler VIP (101,030 p.)
edycja 18 października 2015 przez Radfler
 
Najlepsza

W pętli powinieneś inkrementować wskaźnik, a nie tablicę. Powinieneś też rzutować na typ std::intptr_t:

for(int i = 0; i < 6; ++i, ++wsk_1, ++wsk_2) {
  cout << "i: " << i
       << "wsk_1 = "
       << reinterpret_cast<std::intptr_t>(wsk_1)
       << "wsk_2 = "
       << reinterpret_cast<std::intptr_t>(wsk_2) << endl;
}

 

komentarz 18 października 2015 przez Newtonik Gaduła (3,660 p.)
Tak Radfler masz racje. Poprawiłem i działa też ten błąd zauważyłem poźniej. Dzieki za odpowiedź
0 głosów
odpowiedź 17 października 2015 przez furas Maniak (53,800 p.)
A gdzie pełny komunikat o błędzie ? Może się okazać bardziej wymowny niż samodzielny opis problemu.
komentarz 18 października 2015 przez Newtonik Gaduła (3,660 p.)
error: lvalue required as increment operand
komentarz 18 października 2015 przez furas Maniak (53,800 p.)
Przypuszczam, że ponieważ w jawny sposób stworzono tablicę `ti` i `ta` więc kompilator wie, że `ti` i `ta` wskazują na początek tablicy i wie też, że jak zacznie się to zmieniać to straci wskaźnik na początek tablicy - można powiedzieć, że będzie "wyciek pamięci" - dlatego więc blokuje takie działanie.

Podobne pytania

0 głosów
1 odpowiedź 828 wizyt
pytanie zadane 14 września 2021 w C i C++ przez Eriss69 Gaduła (4,470 p.)
0 głosów
1 odpowiedź 4,239 wizyt
0 głosów
1 odpowiedź 115 wizyt
pytanie zadane 1 stycznia 2020 w C i C++ przez wojtek_suchy Mądrala (6,880 p.)

92,973 zapytań

141,938 odpowiedzi

321,180 komentarzy

62,301 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...