wskaźnik na tablicę char

Odpowiedz Nowy wątek
2012-11-28 23:19

Rejestracja: 7 lat temu

Ostatnio: 6 lat temu

0

#include<iostream>

using namespace std;
main()
{
    char znaki[10];
    char *wsk;
    int tab[2];
    int *t;

    t = &tab[1];

    tab[1] = 2; 

    wsk = &znaki[0];
    znaki[0] = 'a';
    cout << "wsk: " << wsk << " *wsk: " << *wsk << endl;
    cout << "t: " << t << " *wt: " << *t << endl;

    return 0;
}

mam pytanie: po kompilacji poniższego kodu

wsk: a wsk: a
t: 0x22ff38
wt: 2

nie rozumiem jednej rzeczy: dlaczego zmienna int na którą wskazuje wskaźnik *wt ma normalny adres (0x22ff38) i wyświetla się prawidłowa wartość którą tam wpisałem (2), natomiast wsk do typu char pokazuje wartość którą przypisałem tą zmiennej dwukrotnie: po wywołaniu wartości przez wskaźnik oraz po wywołaniu miejsca w pamięci różniej pokazuje się wartość 'a'.

o co chodzi?

Pozostało 580 znaków

2012-11-28 23:37

Rejestracja: 14 lat temu

Ostatnio: 3 dni temu

cout << "wsk: " << (void)wsk << " wsk: " << wsk << endl;
cout << "t: " << (void
)t << " wt: " << t << endl;
pokaże adresy.
Różnica polega na tym że istnieje przeciążony operator ostream << const char
aby wyświetlać napisy
wstaw znaki[1]='x';
i wiersz: cout << "wsk: " << (void
)wsk << " wsk: " << wsk << endl;
wyświetli ci: wsk: ax *wsk: a


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon, 2012-11-28 23:37

Pozostało 580 znaków

2012-11-28 23:52

Rejestracja: 7 lat temu

Ostatnio: 6 lat temu

0

dzięki za pomoc, już jaśniej chociaż o co chodzi z przeciążonym operatorem nie kumam

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0