Ladda ner presentationen
Presentation laddar. Vänta.
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
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.