Uživatelské nástroje

Nástroje pro tento web


prog_c

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
Následující verze
Předchozí verze
prog_c [2016/01/08 22:13] – [vypsani pameti po bytech v hexa] djbuldogprog_c [2025/08/28 10:09] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 73: Řádek 73:
  
 bar is a const or fixed pointer to a value that can be changed. This is like a reference without the extra syntactic sugar. Because of this fact, usually you would use a reference where you would use a T* const pointer unless you need to allow null pointers. bar is a const or fixed pointer to a value that can be changed. This is like a reference without the extra syntactic sugar. Because of this fact, usually you would use a reference where you would use a T* const pointer unless you need to allow null pointers.
 +
 +=== Operace ===
 +
 +  * jsou závislé na typu
 +  * přičítání
 +
 +<code c>
 +void *p=0;
 +uint32_t *u=0;
 +
 +printf("%d", p);   // 0
 +printf("%d", ++p); // 1 !!
 +
 +printf("%d", u);   // 0
 +printf("%d", ++u); // 4 !!
 +</code>
 +
 +  * rozdíl
 +
 +<code c>
 +void *p=0, *p2=4;
 +uint32_t *u=0, *u2=4;
 +
 +printf("%d", p2-p);  // 4
 +printf("%d", u2-u);  // 1 !!
 +</code>
 +
 +==== Pole znaků ====
 +
 +  * definice 2d pole znaků
 +
 +<code c>
 +  char tmp[3][3] = {{ 'a', 'b', '\0' }, { 'A', 'B', '\0' }};
 +</code>
 +
 +  * definice s využitím string literálu (null term se přidává automaticky)
 +
 +<code c>
 +  char tmp[3][3] = { "ab", "AB" };
 +</code>
 +
 +  * počet prvků v poli lze vynechat
 +
 +<code c>
 +  char tmp[][3] = { "ab", "AB" };
 +  tmp[0][0] = '\0'
 +</code>
 +
 +  * ale... tohle už není platný zápis
 +
 +<code c>
 +  char tmp[][] = { "ab", "AB" };
 +</code>
 +
 +  * pole musí byt dostatečně velké (pro nejdelší prvek)
 +  
 +<code c>
 +  char tmp[][5] = { "ab", "ABCD" };
 +</code>
 +
 +  * inicializace 1d pole ukazatelů na pole znaků, které má ukazatele inicializováno na konstantní string literály
 +  * pokud o zápis do pole znaků způsobí sagmentation fault, jelikož paměť je readonly
 +
 +<code c>
 +  char *tmp[2];
 +  tmp[0] = "219.bari2.eu:8080";
 +  tmp[1] = "ffff:123:ff:111:";
 +</code>
 +
 +<code c>
 +  char *tmp[]={
 +    "219.bari2.eu:8080",
 +    "ffff:123:ff:111:"
 +  };
 +</code>
 +
 +  * definice pole znaků - hodnoty lze měnit
 +
 +<code c>
 +  char tmp[] = "abc";;
 +  tmp[0] = 'a';
 +</code>
 +
 +  * definice ukazatele na literál - hodnoty nelze měnit (způsobí segmentation fault), protože jsou uložený v .txt části programu
 +
 +<code c>
 +  char *tmp2 = "abc";
 +  tmp2[1] = 'a';
 +</code>
 +
 +  * více info [[http://www.cplusplus.com/doc/tutorial/ntcs|zde]]
prog_c.1452287606.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki