Witam i witam ponownie.
Chciałbym porozmawiać trochę o wskaźnikach pustki w tym wykładzie.
Wiemy, czym jest void, ponieważ użyliśmy tego słowa
kluczowego, gdy mówiliśmy o funkcjach.
Głównie jeśli nie chcemy zwracać żadnych danych z funkcji,
używamy void jako części podpisu funkcji. A co z sytuacją, w której używamy unikania wskaźnika, co to oznacza?
Cóż, nazwa typu void oznacza brak jakiegokolwiek typu.
Tak więc wskaźnik typu void star może zawierać adres elementu danych dowolnego typu, dzięki
czemu ma dużą elastyczność.
Jeśli nie wiesz, co będziesz przechowywać jako wskaźnik, możesz powiedzieć
void star, całkiem fajne. Zwykle jest używany w funkcjach dla parametrów funkcji.
Dlatego void star jest często używany jako typ parametru lub
typ zwracany w
funkcjach, które zajmują się danymi w sposób niezależny od typu.
Możesz więc pozwolić, aby twoja funkcja była bardziej elastyczna,
jeśli wymaga wskaźników gwiazd pustki.
Zasadniczo oznacza to, że Twoja funkcja
może przyjmować więcej niż jeden typ zmiennej, z wyjątkiem
tego, że nie jest całkowicie elastyczna, ponieważ podczas wyłuskiwania musisz ją w jakiś sposób rzutować.
Zatem każdy rodzaj wskaźnika może być przekazywany jako wartość typu void, dowolnego typu.
Wskaźnik void nie wie, na jaki typ obiektu wskazuje.
Nie możesz więc wyprowadzić go bezpośrednio
i właśnie wtedy pojawia się prawdziwa czkawka wraz z gwiazdą pustki.
Świetnie nadaje się do długiej elastyczności dla różnych typów danych, ale możesz go
używać tylko wtedy, gdy znasz typ danych.
Musisz więc podać wyraźne
rzutowanie wskaźnika podczas wyłuskiwania go.
Adres zmiennej typu int może być przechowywany w zmiennej wskaźnikowej typu
void, ponieważ void star oznacza, że można tam przechowywać dowolny typ danych.
Więc jeśli chcesz uzyskać dostęp do wartości interwału pod
adresem przechowywanym we wskaźniku void star, musisz najpierw rzucić go na
wskaźnik typu int.
W tym przykładzie zobaczymy, jak używasz wskaźnika pustej gwiazdy.
Mamy trzy zdefiniowane przez nas zmienne: liczbę całkowitą, liczbę zmiennoprzecinkową i znak.
Teraz utworzymy wskaźnik pustej gwiazdy.
Ponieważ wskaźnik jest typu void, możemy przypisać mu
adres i, czyli int. Możemy przypisać mu adres
f, który jest zmiennoprzecinkowym, i możemy przypisać adres znaku
lub ch, który jest znakiem.
Jedynym problemem jest to, że kiedy wyłuskiwanie, musisz znać ten typ, ale nadal widzisz tutaj przewagę.
Zaletą jest to, że musimy utworzyć tylko jeden typ zmiennej
i możemy przechowywać w nim wiele różnych adresów.
Ale kiedy chcesz go użyć, musisz użyć tego w gwieździe.
I zobaczysz tutaj, kiedy drukujemy dane, że gwiazda w
gwiazdce rzuca wskaźnik, a potem go usuwamy, gwiazda poza nawiasami int
dokonuje dereferencji. To wypisze wartość
wskazywaną przez wskaźnik v, ale
najpierw wyrzuci ją na właściwy typ.
Więc we wszystkich trzech wskaźnikach v wypisze się mrówce, którą wydrukuje 10.
W przypadku pływaka będzie to 2. 34.
A dla ch, char, wypisze k.
Zobaczymy wskaźnik void używany częściej w parametrach funkcji,
jak powiedziałem, w typach zwracanych.
I to jest naprawdę wartość, jeśli chodzi o używanie tylko
wskaźnika void star w jednej deklaracji i
przypisywanie wielu różnych typów danych. Dziękuję Ci.