Presentation laddar. Vänta.

Presentation laddar. Vänta.

Programmering i C# 9. Pekare och osäker kod. Programmering i C# - Kapitel 9 2 Pekare och osäker kod unsafe { int x = 5; int* p = &x; *p = 10; } En pekare.

Liknande presentationer


En presentation över ämnet: "Programmering i C# 9. Pekare och osäker kod. Programmering i C# - Kapitel 9 2 Pekare och osäker kod unsafe { int x = 5; int* p = &x; *p = 10; } En pekare."— Presentationens avskrift:

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

2 Programmering i C# - Kapitel 9 2 Pekare och osäker kod unsafe { int x = 5; int* p = &x; *p = 10; } 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#

3 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

4 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 … }

5 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

6 Programmering i C# - Kapitel 9 6 Vektor på stack Minne kan inte allokeras unsafe på heap Pekare kan inte tas till klassobjekt Operatorn sizeof ger objekts storlek i bytes, operanden är typnamn 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;


Ladda ner ppt "Programmering i C# 9. Pekare och osäker kod. Programmering i C# - Kapitel 9 2 Pekare och osäker kod unsafe { int x = 5; int* p = &x; *p = 10; } En pekare."

Liknande presentationer


Google-annonser