Tablica wskaźników - prośba o wyjaśnienie

0
#include <stdio.h>

int main()
{
	char *tab[] = { "Myszka", "Miki" };

	printf("%s", tab[1]);

	getchar(0);
}

Mam pytanie co do tego kodu, zdefiniowałem sobie tablicę wskaźników składającą się z 2 elementów, w pierwszym znajduje się adres do napisu Myszka, a w drugim do Miki. Teraz jeżeli chciałbym wypisać ten napis Myszka(który jest zapisany w tablicy char) powinienem napisać printf("%s", *tab[1]); , no bo samo tab[1] to przecież zawiera adres tego napisu, a dopiero dodanie * to odwołanie do tego co jest pokazywane przez ten adres, jednak gdy piszę tak to nie działa, a o dziwo gdy piszę samo tab[1] to wypisuje poprawnie ?

Czy ja coś źle rozumuję ??

0

*tab[i] daje Ci wartość typu char, bo przecież tab jest typu char* tab[n] -> tab[i] daje char* (tego oczekuje printf, bo podałeś "%s" ;) ).

0

printf("%s") raczej oczekuje adresu łańcucha. Ciężko wepchąć cały łańcuch na stos (tzn przekazać jako wartość).

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