Kategorie szkoleń | Egzaminy | Kontakt

Odpowiedź (1)

  • 3

Tak, można używać wspaźników, ale powinniśmy tej funkcji używać tylko w wyjątkowych sytuacjach. Aby była możliwość kompilacji takiego kodu, w opcjach projektu należy ustawić "Build/Allow unsafe code". A kod, w którym używamy wskaźników, otoczyć blokiem "unsafe".

Poniżej krótki przykład laboratoryjny:

            byte[] b = new byte[8];
            unsafe
            {
                // uzyskanie adresu tablicy - tablica to obiekt zarzadzany-aby jej adres sie
               // nie zmienil w czasie odwolac przez wskaznik uzywamy bloku fixed
                fixed (byte* p = b)
                {
                   //rzutowanie adresu liczby typu byte na adres typu int
                    int* i = (int*)p;
                  //tym sposobem zmieniam 4 kolejne elementy tablicy byte elementy (0-3)
                    *i = 1857;
                 //a tu zmieniam kolejne 4 elementy tablicy (4-7)
                    *(i + 1) = 5678;
                  //rzutuje adres do int na adres do long, dzieki temu wyświetlam cala tablice
                  //jako liczbe typu long
                    Console.WriteLine(*(long*)i);
                }
            }

  • Odpowiedział
  • @ | 11.07.2014
  • TRENER ALTKOM AKADEMII