wskaźnik na tablicę char

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?

1

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

0

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

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