• 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

0 głosów
344 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 Mentor (354,880 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,360 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 Mentor (354,880 p.)
Tak, to prawda - ogólnie seria Zelenta ma dużo błędów niestety.

Podobne pytania

0 głosów
0 odpowiedzi 431 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 150 wizyt
pytanie zadane 9 sierpnia 2016 w C i C++ przez Marcin Broź Użytkownik (550 p.)
+1 głos
1 odpowiedź 1,008 wizyt
pytanie zadane 8 sierpnia 2016 w C i C++ przez Marcin Broź Użytkownik (550 p.)

93,633 zapytań

142,558 odpowiedzi

323,058 komentarzy

63,142 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2900p. - dia-Chann
  2. 2870p. - DziarnowskiJ
  3. 2827p. - Łukasz Piwowar
  4. 2783p. - raydeal
  5. 2758p. - Adrian Wieprzkowicz
  6. 2713p. - rucin93
  7. 2579p. - Łukasz Eckert
  8. 2523p. - Maurycy W
  9. 2459p. - CC PL
  10. 2082p. - Michal Drewniak
  11. 1885p. - robwarsz
  12. 1851p. - Mariusz Fornal
  13. 1811p. - rafalszastok
  14. 1600p. - Rafał Trójniak
  15. 1588p. - Tomasz Bielak
Szczegóły i pełne wyniki

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

Kursy INF.02 i INF.03
...