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

Wskaźniki, lekcja z yt błąd kompilacji

VPS Starter Arubacloud
0 głosów
222 wizyt
pytanie zadane 2 kwietnia 2022 w C i C++ przez Viltus Początkujący (300 p.)

Witam, uczę się wskaźników z lekcji Mirosława na yt. Na początek analizując to co autor, w pewnym momencie jemu się kompiluje a mi nie:

 

#include <iostream>
using namespace std;

int ile;

int main()
{
    cout << "Ile liczb w tablicy: " ;
    cin >> ile;

    int *tablica;
    tablica = new int [ile]; // rezerwowanie pamieci

    for ( int i = 0; i < ile; i++ )
    {
        cout <<(int)tablica << endl; // BŁĄD KOMPILACJI 
        tablica++;
    }

    delete [] tablica;

    return 0;
}

 

BŁĄD: 

error: cast from 'int*' to 'int' loses precision [-fpermissive]|

i nie wiem dlaczego 
 

1 odpowiedź

+1 głos
odpowiedź 2 kwietnia 2022 przez adrian17 Ekspert (349,240 p.)
Na filmie pewnie autor kompilował w trybie 32-bitowym, a Ty teraz w trybie 64-bitowym.

Na Twojej konfiguracji wskaźnik ma 64 bity, ale int wciąż ma tylko 32 bity - więc kompilator narzeka, że ta konwersja prawdopodobnie nie ma sensu, bo traci połowę bitów.

Żeby zadziałała, powinieneś zrobić konwersję na większy typ - long, size_t lub (najlepiej) - uintptr_t. Ten ostatni to typ liczbowy który zawsze ma tą samą wielkość co wskaźnik.
komentarz 2 kwietnia 2022 przez Viltus Początkujący (300 p.)
dzięki, działa ;)
1
komentarz 2 kwietnia 2022 przez Oscar Nałogowiec (29,340 p.)
Ale i tak jest błędny. Który to już raz ten błąd... Trzeba wywalić ten filmik z YT.

Mamy polecenia:

tablica = new [...]

teblica++ ileś razy

delete [] rablica.

Tak nie wolno robić. Do delete idzie dokładnie taki wskaźnik jaki dał new. Niezmodyfikowany.
1
komentarz 2 kwietnia 2022 przez adrian17 Ekspert (349,240 p.)
Tak, to prawda - ogólnie seria Zelenta ma dużo błędów niestety.

Podobne pytania

0 głosów
0 odpowiedzi 347 wizyt
pytanie zadane 14 września 2018 w C i C++ przez Piotr Batko Stary wyjadacz (13,210 p.)
0 głosów
0 odpowiedzi 111 wizyt
pytanie zadane 9 sierpnia 2016 w C i C++ przez Marcin Broź Użytkownik (550 p.)
+1 głos
1 odpowiedź 702 wizyt
pytanie zadane 8 sierpnia 2016 w C i C++ przez Marcin Broź Użytkownik (550 p.)

92,979 zapytań

141,941 odpowiedzi

321,185 komentarzy

62,303 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!

...