Presentation laddar. Vänta.

Presentation laddar. Vänta.

Programmering i C# 9. Pekare och osäker kod.

Liknande presentationer


En presentation över ämnet: "Programmering i C# 9. Pekare och osäker kod."— Presentationens avskrift:

1 Programmering i C# 9. Pekare och osäker kod

2 Pekare och osäker kod En pekare är en variabel som innehåller en minnesadress Används mycket i C/C++ men ersätts i C# av referenser Kan användas undantagsvis i C# unsafe { int x = 5; int* p = &x; *p = 10; } Programmering i C# - Kapitel 9

3 Unsafe Kodblock där pekare ska användas markeras unsafe
Operatorn & returnerar adress till variabel Tecknet * deklarerar en pekartyp Operatorn * avrefererar en pekare Operatorn -> väljer medlem via pekare Operatorn [] ger offset och avreferering Programmering i C# - Kapitel 9

4 Pekare till struct Adress kan tas till struct på stack
Adress kan också tas till struct som ingår i klassobjekt Finns ju då på heap och hanteras av VES Objektet måste vara låst med fixed class MyClass { public MyStruct s; … } MyClass obj = new MyClass(); fixed (MyStruct* p = &(obj.s)) { // använd p … } Programmering i C# - Kapitel 9

5 Pekare för vektorer Ett ändamål för pekare är snabb traversering av vektorer Nu menas inte Array-objekt Indexoperatorn, pekararitmetik och operatorn stackalloc stackalloc möjliggör allokering av sammanhängande minne på stack Returnerar en pekare till minnet Programmering i C# - Kapitel 9

6 Vektor på stack Minne kan inte allokeras unsafe på heap
double *p, *arr = stackalloc double[100]; for (p = arr; p < arr + 100; p++) *p = 0; // kan också användas med index: for (int i = 0; i < 100; i++) arr[i] = 0; Minne kan inte allokeras unsafe på heap Pekare kan inte tas till klassobjekt Operatorn sizeof ger objekts storlek i bytes, operanden är typnamn Programmering i C# - Kapitel 9


Ladda ner ppt "Programmering i C# 9. Pekare och osäker kod."

Liknande presentationer


Google-annonser