C# - 3. lekce
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

C# - 3. lekceC# - 3. lekce

 
Hledat
Moderní platforma pro vytvoření vašeho nového webu – Wix.com.
Nyní už můžete mít web zdarma.
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno
Laser Game Ostrava

C# - 3. lekce

Google       Google       17. 8. 2005       43 358×

Tuto lekci berte jako nahlédnutí do světa ukazatelů...

Reklama
Reklama

Ukazatele

Pokud to s ukazateli myslíte vážně, raději šáhněte po něčem komplexnějším, protože tady se jede podle pravidla: "Dvakrát měř - jednou řeš". Naštěstí, ukazatele nepotřebujete do doby, než vás začne zajímat, zda by vaše aplikace nemohla jet rychleji, takže pro běžnou práci nejsou zapotřebí.

Zápis ukazatelů

Ukazatele jsou proměnnými, které uchovávají paměťovou adresu jiného typu. V C# mohou uchovávat jen paměťové adresy hodnotových typů. Deklarace ukazatelů:


int *p;

nebo


int* p;
Je jedno, čemu je symbol "*" blíže, funguje to naprosto stejně. Tato deklarace nastaví ukazatel p na počátek paměťové adresy nějakého celého čísla.

Kombinace *p se užívá k odkazu na místo v paměti, které je obsazeno p. Proto je dán její deklarací. *p může pro celá čísla vypadat následně:


*p = 5;

Tento kus kódu převede hodnotu 5 do celých čísel (integer), dle nastavení v deklaraci. Je nutné si to neplést s případem, kdy se o ukazatel nejedná:


p = 5;

Efektem je změna paměťového místa drženého p. Nikoliv změna hodnoty celého čísla nastaveného původně v deklaraci. Ve skutečnosti p ukazuje na začátek 4 bytů (rozsah typu integer) představujících v paměti umístění 5.

Další důležitý prvek pro práci s ukazateli je operátor &, který v tomto kontextu vrátí adresu proměnné, před kterou je. Příklad nastaví p, aby ukazovalo na umístění i v paměti.


int i = 5;
int *p;
p = &i;

po přidání


*p = 10;

se hodnota i změní na 10, protože i a p ukazují na to samé místo v paměti.

Dále se ukazatelé dají použít pro struktury, ukázka:


Coords x = new Coords();
Coords *y = &x;

Poté můžete pomocí ukazatele y přistupovat k nějakému veřejnému poli ze struktury x, řekněme k z, to je možné provést buď tak


(*y).z

nebo tak


y -> z.

Unsafe code (nebezpečný kód)

Jen v tomto režimu lze používat ukazatele, většinou je nutné upozornit na to, že se to chystáte použít v kompilátoru, jinak vám nahlásí chybu (v Sharpdevelopu je to v nastaveních Project Options). V tomto režimu nefunguje automatická správa paměti (garbage collection), takže to, co napácháte, byste po sobě měli i uklidit. Ukázka programu s pointery (ukazateli):


using System;
public struct Coords
{
  int x;
  int y;
  unsafe public static void Main()
  {
    Coords c = new Coords();
    Coords *p = &c;
      {
        p->y = 6;
        (*p).x = 5;
      }
    Console.WriteLine(c.y);
    Console.WriteLine(c.x);
  }
}

Tady je struktura Coords deklarována uvnitř nebezpečného kódu, ale kdyby byla deklarována mimo něj, ukazatel by musel být ve struktuře fixed, ale toto není téma na malý tutoriál, ale spíše na nějakou delší kapitolu v knize a pokud umíte anglicky nebo japonsky :), můžete spoustu informací najít v MSDN. Dostanete se do ní ze stránek Microsoftu.

Ukazatele, metody a pole

Ačkoliv jsme si řekli, že ukazatele mohou sloužit jen hodnotovým typům, výjimkou jsou pole, zde je ukázka deklarace:


int[] a = {4, 5};
int *b = a;

A jak to pracuje? To si tak ukazatel b ukazuje na první typ obsazený polem a, tento typ musí být opět hodnotový. Kód níže ukazuje, že je možné procházet pole pomocí ukazatelů:


using System;
public class Tester
{
  public static void Main()
  {
    int[] a = {4, 5};
    changeVal(a);
    Console.WriteLine(a[0]);
    Console.WriteLine(a[1]);
  }
  
  public unsafe static void changeVal(int[] a)
  {
    fixed (int *b = a)
    {
      *b = 5;
      *(b + 1) = 7;
    }
  }
}

A jsme u konce. Tento tutoriál je spíše informativní než naučný, vychází to také z toho, že když nechcete, tak na ukazatele nemusíte vůbec sahat. A pokud po nich zatoužíte, není problém je použít. S ukazateli se v tomto seriálu už s největší pravděpodobností nesetkáte a raději se vrhneme na něco jednoduššího, takže příště zase trošku té normální syntaxe.

Zdroj: http://www.softsteel.co.uk/tutorials/cSharp/lesson5.html

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
Autor programuje v C#.

Nové články

Obrázek ke článku Startup DoDo zajistí městskou logistiku pro RunCzech

Startup DoDo zajistí městskou logistiku pro RunCzech

Startup DoDo se stává důležitým partnerem RunCzecha na významných běžeckých závodech včetně 25. ročníku Volkswagen Maratonu Praha se bude starat o logistické zázemí. Lídr v oblasti městské logistiky bude mimo jiné zásobovat občerstvovací stanice a pomůže rovněž se zajištěním televizních přenosů ze závodů.

Reklama
Reklama
Obrázek ke článku Možnosti současného tisku: kloubní protéza, gigantický billboard i fotoobklady

Možnosti současného tisku: kloubní protéza, gigantický billboard i fotoobklady

Moderní technologie tvoří svět kolem nás. Raketový vývoj zaznamenává oblast informačních technologií ruku v ruce s odvětvím zaměřeným na tisk. Nové postupy a přístroje v tiskařské oblasti nacházejí uplatnění v mnoha směrech. Od zdravotnictví a průmyslu, zejména díky 3D tiskárnám, přes reklamu až po přenášení motivů na obklady užívané jako moderní prvek v interiérech. Současnost zkrátka přináší nespočet druhů tisku, protože díky nynějším přístrojům lze vytisknout v podstatě cokoliv. Jaké nejzajímavější možnosti jsou k mání?

Obrázek ke článku Nezávislý bezpečnostní audit varuje: Lidé ukládají na Ulož.to firemní hesla, smlouvy i rodná čísla

Nezávislý bezpečnostní audit varuje: Lidé ukládají na Ulož.to firemní hesla, smlouvy i rodná čísla

Veřejná online úložiště jsou pro firmy zásadním bezpečnostním rizikem úniku a ztráty citlivých firemních dokumentů i osobních údajů. Zjištění vychází z výsledků bezpečnostní analýzy souborů na Ulož.to, kterou provedli odborníci na kyberbezpečnost ze SODAT. Analýza odhalila stovky firemních přístupových hesel, rodných čísel i pracovních smluv. Ty nahrávají na veřejná úložiště nejčastěji sami zaměstnanci v rámci zálohování nebo sdílení souborů. 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032019 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý