Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] wskaźniki - kolejne wartości adresów w pętli for

Ostatnio zmodyfikowano 2015-03-01 12:20
Autor Wiadomość
Mlorism
Temat założony przez niniejszego użytkownika
[C++] wskaźniki - kolejne wartości adresów w pętli for
» 2015-03-01 09:41:01
Witam, dopiero zaczynam poznawać wskaźniki i nie rozumiem dlaczego jedna wersja kodu działa jak powinna, czyli pokazuje mi kolejne adresy wskaźników z tablicy, a druga pokazuje mi tylko 2, a następnie same zera. Używam CodeBlocks'a.

Kod działający poprawnie:

C/C++
#include <iostream>

using namespace std;
int ile, * bit;

int main()
{
    cout << "Ile chcesz poznac adresow bitowych: ";
    cin >> ile;
    bit = new int[ ile ];
   
    for( int i = 0; i < ile; i++ )
    {
        cout <<( int ) bit << endl;
        bit++;
    }
   
    return 0;
}

Niepoprawny ma tylko inną pętlę for:

C/C++
for( int i = 0; i < ile, i++ )
{
    cout <<( int ) bit[ i ] << endl;
}
P-127500
aksen
» 2015-03-01 12:20:16
bit - jest wskaźnikiem na int (a więc zawiera adres jakiejś komórki z typem int)


cout << (int)bit << endl; - tu wypisujesz ten adres dziesiętnie
cout << bit << endl; - tak można go wypisać szesnastkowo


cout <<( int ) bit[ i ] << endl;  - a tak wypisujesz ZAWARTOŚĆ KOMÓRKI PAMIĘCI (a nie adres) na którą wskazuje wskaźnik bit z przesunięciem o 'i' komórek (konwersja na int jest tu niepotrzebna)
cout << *(bit+i)  << endl;   - to samo co wyżej tylko inaczej zapisane
P-127502
« 1 »
  Strona 1 z 1