Udostępnij za pośrednictwem


Typy wskaźnik (C# Programming Guide)

W kontekście niebezpiecznego typu może być typ wskaźnika, wpisz wartość lub typ odwołania.Deklaracja typu wskaźnik przyjmuje jedną z następujących form:

type* identifier;
void* identifier; //allowed but not recommended

Dowolny z następujących typów może być typu wskaźnik:

Typy wskaźnik nie dziedziczą od obiektu i nie konwersje istniejących między typami wskaźników i object.Ponadto boksie i pakowania nie obsługują wskaźniki.Jednakże można konwertować między wskaźnik różnych typów i między typy wskaźnik i integralną.

Przy deklarowaniu wielu wskaźników w deklaracji z tej samej * są zapisywane wraz z tylko typ podstawowy nie jako prefiks do nazwy każdego wskaźnika.Na przykład:

int* p1, p2, p3;   // Ok
int *p1, *p2, *p3;   // Invalid in C#

Wskaźnik nie może odnosić się do odwołania lub do struct zawiera odwołania, ponieważ odwołanie do obiektu może być czyszczenie, nawet jeśli wskaźnik jest wskazując go.Wykaz Globalny nie przechowywać o czy obiekt jest jest wskazywana przez wszelkich typów wskaźników.

Wartość zmiennej wskaźnika typu myType* jest adresem zmiennej typu myType.Oto przykłady deklaracji typu wskaźnik:

Przykład

Opis

int* p

p jest wskaźnik do liczby całkowitej

int** p

p jest wskaźnik do wskaźnika do liczby całkowitej

int*[] p

p jest tablicy jednowymiarowej wskaźników do liczb całkowitych

char* p

p jest wskaYnikiem char

void* p

p jest wskaźnik do nieznanego typu

Operator pośrednia wskaźnik * mogą służyć do uzyskiwania dostępu do zawartości w lokalizacji wskazywanej przez zmienną wskaźnik.Na przykład rozważmy następującą deklarację:

int* myVariable;

Wyrażenie *myVariable oznacza int znaleźć pod adresem, zawarte w zmiennej myVariable.

Operator pośrednia nie można zastosować do wskaźnika typu void*.Jednakże rzutowania można użyć do konwersji wskaźnik void na inny typ wskaźnika i vice versa.

Wskaźnik może być null.Stosowanie operatora pośrednia do wskaźnik null powoduje zachowanie zdefiniowane w implementacji.

Należy pamiętać, że przekazywanie wskaźników między metody może spowodować niezdefiniowane zachowanie.Przykłady zwracasz wskaźnik do zmiennej lokalnej poprzez Ref lub Out parametru lub jako wynik funkcji.Jeśli wskaźnik został ustawiony w bloku stałej, zmiennej, która wskazuje już może zostać ustalona.

W poniższej tabeli przedstawiono operatory i instrukcji, które mogą działać na wskaźniki w kontekście niebezpieczne:

Operator/instrukcji

Użyj

*

Wykonuje pośrednia wskaźnik.

->

Uzyskuje dostęp do członka struct za pomocą wskaźnika.

[]

Indeksowane wskaźnika.

&

Uzyskuje adres zmiennej.

++ i--

Skoki i zmniejsza wskaźniki.

+ i -

Wykonuje operacje arytmetyczne wskaźnik.

==,! = <>,, < =, a > =

Porównanie wskaźników.

stackalloc

Przydziela pamięć na stosie.

fixedInstrukcja

Tymczasowo rozwiązuje zmiennej, dzięki czemu można znaleźć jego adres.

Specyfikacja języka C#

Aby uzyskać więcej informacji, zobacz Specyfikacja języka C#. Specyfikacja języka to najlepsze źródło informacji dotyczących składni i zastosowania języka C#.

Zobacz też

Informacje

Niebezpieczny kod i wskaźniki (Podręcznik programowania C#)

Wskaźnik konwersji (Podręcznik programowania C#)

Wskaźnik wyrażeń (Podręcznik programowania C#)

niebezpieczne (C# odniesienia)

ustalonej instrukcji (C# odniesienia)

stackalloc (C# odniesienia)

Boks i pakowania (C# Programming Guide)

Koncepcje

Podręcznik programowania C#

Inne zasoby

Typy (C# odniesienia)