Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Gymnázium prof. Jana Patočky Jindřišská 36 110 00 Praha 1 „Praha & EU: Investujeme do vaší.

Podobné prezentace


Prezentace na téma: "Gymnázium prof. Jana Patočky Jindřišská 36 110 00 Praha 1 „Praha & EU: Investujeme do vaší."— Transkript prezentace:

1 Gymnázium prof. Jana Patočky Jindřišská Praha 1 „Praha & EU: Investujeme do vaší budoucnosti“

2 Jazyk C Pointery a funkce Ve většině programovacích jazyků je možno parametry procedury nebo funkce možno volat dvojím způsobem:  hodnotou: jako skutečný parametr se předává hodnota (obsah paměťového místa). To znamená, že uvnitř funkce není možnost toto paměťové místo nijak modifikovat.  odkazem: jako skutečný parametr se předává adresa paměťového místa. Uvnitř funkce je možno s tímto paměťovým místem pracovat.

3 Jazyk C Pointery a funkce Jazyk C:  nezná procedury, pouze funkce  neumožňuje jiné předání parametrů než hodnotou Takže pokud potřebuji předat jako parametr funkce odkaz na paměťové místo (třeba proto, abych mohl s tímto paměťovým místem pracovat ve funkci a výsledek použít i po návratu z funkce), nezbývá než použít pointer.

4 Jazyk C Pointery a funkce K čemu mi to bude dobré: třeba tam, kde chci, aby funkce vracela více než jednu hodnotu: int pocpol, iprom1, iprom2 ; char text[20]; pocpol=scanf("%d %d",&iprom1,&iprom2); pocpol=scanf("%s",text); /* nazev pole bez indexu je automaticky pointer, takze nepisu operator reference */ Funkce scanf vrací jako funkční hodnotu počet načtených položek (zde v 1. případě 2, ve druhém 1) a současně do pole text načte znaky z klávesnice. Celé je to tak trochu podvod: ve skutečnosti se do funkce předá hodnota pointeru na proměnnou text. Proměnná text je definovaná v nadřízeném programu, je tedy dostupná i po opuštění funkce. Pointer se v tomto případě po opuštění funkce ztratí.

5 Jazyk C Pointery a funkce Příklad: funkce, která vymění obsah dvou proměnných void vymen (int *p_x, int *p_y) { int pom; pom = *p_x; *p_x = *p_y; *p_y = pom; } a její volání: int i = 5, j = 11 ; vymen (&i, &j) ;

6 Jazyk C Pointery a funkce Pointerů se bohatě využívá například ve funkcích, které pracují se znakovými řetězci; zde je obvykle nutno pracovat uvnitř funkce s více řetězci najednou, takže předání jejich adres pointery je nejlepší řešení. Příklady nejpoužívanějších funkcí pro práci s řetězci: -pro správnou funkci je nutno připojit hlavičkový soubor: #include - protože jméno znakového řetězce je samo o sobě pointer, není nutno psát při volání funkce referenci “&” Všechny funkce jsou typu „pointer“, tzn. vracejí jako funkční hodnotu pointer na první znak řetězce s1. Příklad volání: char text1[50], text2[50], *p_navr ; p_navr=strcpy(text1,text2) ;

7 Jazyk C Pointery a funkce Nejpoužívanější znakové funkce: (zde uvedena definice funkčního prototypu): char *strcpy (char *s1, char *s2) ; kopírování řetězce s2 do s1 char *strcat (char *s1, char *s2); spojení řetězců: připojí s2 k s1 char *strchr (char *s1, char c); hledání znaku C v řetězci s1; pokud se najde, vrátí pointer na první výskyt, jinak hodnotu NULL char *strstr (char *s1, char *s2); hledání řetězce s2 v řetězci s1; pokud se najde, vrátí pointer na první výskyt, jinak hodnotu NULL


Stáhnout ppt "Gymnázium prof. Jana Patočky Jindřišská 36 110 00 Praha 1 „Praha & EU: Investujeme do vaší."

Podobné prezentace


Reklamy Google