abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 03:55 | IT novinky

    Společnost Valve publikovala na svém GitLabu nákresy a schémata zapojení headsetu Steam Frame. Pro nekomerční účely.

    Ladislav Hagara | Komentářů: 0
    včera 23:11 | Bezpečnostní upozornění

    Soutěž Pwn2Own Ireland 2026 skončila 9. října. Bezpečnostní výzkumníci získali celkem 1 262 000 dolarů na odměnách. Během soutěže bylo předvedeno zneužití 98 zero-day zranitelností. Testování zahrnovalo různé kategorie zařízení a software. Výzkumníci předváděli prakticky fungující útoky podle pravidel soutěže. Výsledky následně slouží výrobcům při přípravě oprav. Mezi pokořenými jsou: Samsung Galaxy S26, OpenAI Codex, Oracle Autonomous AI Database, Google Pixel 10, u iPhone 17 neuspěli.

    vencour | Komentářů: 0
    9.10. 22:44 | Nová verze

    Programovací jazyk Python byl vydán v nové verzi 3.15.0. Podrobný přehled novinek v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 6
    9.10. 22:33 | Zajímavý projekt

    BIGWORDS.PAGE je open-source webová aplikace, která po otevření odkazu v prohlížeči vykreslí přes celou obrazovku jednoduché informační sdělení. Zpráva i její nastavení jsou uložené v části URL za znakem #, například odkaz https://bigwords.page/#abclinuxu zobrazí jako velký bílý nápis 'abclinuxu' na černém pozadí. Obsah odkazu lze upravovat i vestavěným editorem, ten umožňuje nastavovat formátování a vizuální efekty textu, časovače, QR kódy a obrázky. Zdrojový kód je dostupný pod licencí MIT na GitHubu.

    ❗Červivý Hřib krade❗ | Komentářů: 8
    9.10. 11:55 | Upozornění

    V neděli 11. října proběhne rotace klíče kořenové zóny. Podruhé v historii. Ondřej Filip na blogu CZ.NIC: "Pokud je pro Vás DNS protokol spíše výzva, ale přesto spravujete nějakou síť či DNS resolver, zkuste si jednoduchý test, který připravila firma Cloudflare na této adrese. Obzvláště zbystřit byste měli, pokud uvidíte nějaká červená políčka."

    Ladislav Hagara | Komentářů: 14
    9.10. 09:55 | IT novinky

    Vláda Spojených států se rozhodla vyřadit americkou softwarovou společnost Microsoft a několik dalších velkých technologických podniků z programu, který umožňuje kvalifikovaným zahraničním pracovníkům získat povolení k trvalému pobytu. Oznámila to včera administrativa amerického prezidenta Donalda Trumpa. Opatření zdůvodnila rozsáhlým zneužíváním programu, který je dlouhodobě terčem kritiky ze strany Trumpových příznivců, neboť prý znevýhodňuje americké pracovníky.

    Ladislav Hagara | Komentářů: 11
    9.10. 09:44 | IT novinky

    Datové centrum největší ruské technologické společnosti Jandex v Rjazaňské oblasti se stalo cílem dronového útoku a zastavilo provoz. Jandexu se někdy přezdívá „ruský Google“. Provozuje nejoblíbenější internetový vyhledávač v Rusku nebo aplikace pro objednávky jídla a taxi. Využívají jej desítky milionů lidí v rusky mluvících zemích.

    Ladislav Hagara | Komentářů: 12
    9.10. 09:33 | Nová verze

    Francouzská společnost Mistral AI představila Mistral Large 4 (interně přezdívaný 'le Chonk', volně přeloženo 'pořádný macek'), 'open-weight multimodální hybridní instruct-and-reasoning model s architekturou granulárního MoE, nativně podporující více jak 160 jazyků'. Model má přes jeden bilión parametrů, z nichž při práci využívá 49 miliard, kontextové okno o délce milion tokenů a obrazový enkodér o 1,6 miliardách parametrů.

    … více »
    ❗Červivý Hřib krade❗ | Komentářů: 2
    9.10. 03:22 | Nová verze

    Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.20. Díky 227 přispěvatelům.

    Ladislav Hagara | Komentářů: 0
    9.10. 03:11 | Komunita

    Simon Long oznámil Raspberry Pi Desktop pro PC a Mac s Intelem postavený na aktualizovaném Debianu 13 Trixie. S klientem Raspberry Pi Connect pro vzdálenou správu. Ke stažení je vedle Raspberry Pi OS pro Raspberry Pi.

    Ladislav Hagara | Komentářů: 1
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (29%)
     (8%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2828 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    Rozcestník
    Štítky: není přiřazen žádný štítek


    Vložit další komentář
    Jendа avatar 4.2.2021 19:48 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Ukazatele - Jazyk C
    V případě ukazatelů na struktury existují dvě možnosti, jak přistupovat k položkám struktur:
    (*p).x
    nebo pohodlnější
    p->x
    Jsem jediný, komu chybí p-->x (ekvivalent zmíněného (*m)->rows → m-->rows)? Šlo by na to napsat makro? :-D
    4.2.2021 23:05 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Ukazatele - Jazyk C
    Nemyslím že by to nějak zvlášť přispělo čitelnosti. Navíc takhle by ten operátor určitě vypadat nemohl, protože m-->rows se parsuje jako (m--)->rows a asi by mi i víc smyslu dávalo m->>rows. Pocit chybějícího operátoru mám spíš u konstrukcí typu (*p)[idx]
    4.2.2021 23:06 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Ukazatele - Jazyk C
    protože m-->rows se parsuje jako (m--)->rows

    Oprava: mělo tam být "…jako (m--) > rows".

    ❗Červivý Hřib krade❗ avatar 5.2.2021 12:28 ❗Červivý Hřib krade❗ | skóre: 43 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: Ukazatele - Jazyk C

    děte si mršit c++ jóóó??? :O >:C

    jestli to teda eště jako nějak víc de :D :D ;D ;D

    Pamatujete, jak Medvěděv chtěl hodit atomovku na Berlín? Tak teďko by se to hele šiklo 💥☢️🤪
    4.2.2021 19:49 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: Ukazatele - Jazyk C
    Ukazatel je špecialná premenná, ktorá pracuje s adresami. 
    debian.plus@protonmail.com
    Člověk z Horní Dolní avatar 4.2.2021 20:11 Člověk z Horní Dolní | blog: blbeczhornidolni
    Rozbalit Rozbalit vše Re: Ukazatele - Jazyk C
    A TL;DR verze?
    4.2.2021 20:58 podlesh
    Rozbalit Rozbalit vše Re: Ukazatele - Jazyk C
    jen retro vzpomínky na to, jak se programovalo v minulém tisíciletí
    4.2.2021 21:49 Ariczek | skóre: 5
    Rozbalit Rozbalit vše Re: Ukazatele - Jazyk C
    Třeba v embedded světě je to běžné i dneska.

    Tam, kde dělám cca 8 let, je nejnovější možný výstřelek C++03 v gcc-4.3 ;)
    4.2.2021 22:51 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Ukazatele - Jazyk C
    No, nebýt těch hlaviček funkcí, měl bych pocit, že je velká část příkladů opsaná z Kernighana a Richieho. A jsou tam i věci, které by dneska asi při review narazily. Třeba ta hromada chybějících const (hlavně ten nekonstantní pointer ukazující do string literal) nebo zbytečné přetypovávání pointerů vracených malloc().
    5.2.2021 00:46 kvr
    Rozbalit Rozbalit vše Re: Ukazatele - Jazyk C
    Kromě chybějících const všude možně (například strlen v základní knihovně a všechny ostatní mají u vstupních proměnných všude const. Stejně tak string constants jsou jako const char * ), nějakých optimalizací jako memcpy místo strcpy, když už je známa délka. Typ size_t není kvůli bezpečnosti, ale kvůli přenositelnosti (zdravím Microsoft s jejich neslavným DWORD), i když v korektní přenositelnost má eventuelně na bezpečnost vliv taky.

    Nicméně, je to jen takový jemný úvod, který si asi přečtou studenti v první kapitole jazyka C. Čekal bych nějakou sondu do třešniček, jako třeba deklarace pole ukazatelů vs ukazatel na pole, funkce vracející ukazatel na pole apod. Ve své době, kdy jsem ještě dělal v C++, tohle byly moje noční můry, které jsem bez manuálu zpaměti obvykle nedal :-D .

    5.2.2021 20:01 johnyK | skóre: 2 | blog: uxblog
    Rozbalit Rozbalit vše Re: Ukazatele - Jazyk C
    Kromě chybějících const všude možně (například strlen v základní knihovně a všechny ostatní mají u vstupních proměnných všude cons
    co se prakticnosti tyce bych mel jednu pripominku:

    kvuli tem miliardam dotazum na internetu, jak to s tim const hlavne u tech pointru na char vlastne je, jsem toho nazoru, ze my, kteri jsme s K&R zacinali se bez tech const dost dobre muzeme obejit.

    To ze me ten const u strlen-funkce ubezpecuje, ze ta funkce ten string pri zjistovani te delky nezmeni mi nijak zvlast nevzrusuje a ani neuklidnuje, nas starsi by v zivote nenapadlo, ze by nekdo mohl napsat funkci, ktera by to delela. :-) Taky bych se vsadil, ze 99,99% C-programatoru by nedokazalo z fleku napsat tu deklaraci toho nemeneho pointru na ten nemeny retezec. (ja bych to tedy nedokazal :-))

    Dlouho se rikalo, ze to const muze urychlit program. Na netu je rada clanku, ktere to vyvraci.

    5.2.2021 22:28 kvr
    Rozbalit Rozbalit vše Re: Ukazatele - Jazyk C
    To není ani tak o tom, zda člověk používáním selského rozumu dokáže sám odhadnout, zda funkce nemění data. Ale je to hlavně informace pro kompilátor, který dokáže odchytit potenciální chyby, což je důležité zvláště u komplexnějších projektů.

    Neměnný pointer na neměnný řetězec je celkem jednoduchý - prostě se dá const před cílový typ i před samotnou proměnnou. Prakticky je ale důležitý ten cílový typ, co si funkce dělá s parametrem vevnitř (kopií proměnné předávanou volajícím), mi může být ukradené (i když best practice říká, že parametry se neměnní).

    Ohledně vlivu na výkon - viz výše, to není hlavním cílem. Ale nevyvracel bych to, samozřejmě ne v triviálních případech jako strlen. Kompilátor si může uložit kopii do registru nebo její část v případě struktur apod., takže lepší výkon může být důsledkem taky.
    6.2.2021 12:06 kralyk z abclinuxu | skóre: 29 | blog:  
    Rozbalit Rozbalit vše Re: Ukazatele - Jazyk C
    co si funkce dělá s parametrem vevnitř (kopií proměnné předávanou volajícím), mi může být ukradené
    Nóóó... úplně jedno to taky není, z tohohle důvodu byl přidán restrict, kterým se vývojář zaklíná, že nebude vytvářet aliasy (kopie pointerů apod.), což umožňuje optimalizace přístupu do paměti / lepší cachování...

    (Je to tak trochu směrem, kterým šel Rust, kde jsou pravidla aliasingu ještě o dost striktnější a jejich dodržování tvrdě vymáháno kompilátorem, v C jde jen o optimalizační hint a kompilátor maximálně háže warningy. Paradoxně Rust aktuálně ten optimalizační potenciál nevyuživá, protože v LLVM to je rozbité :-D)
    5.2.2021 23:25 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Ukazatele - Jazyk C
    Jeden příklad z reálné praxe: tenhle commit opravuje nenápadnou regresi, kvůli které spousta lidí po upgradu na jádro 5.10 nenabootovala (doporučuji pozornosti zejména položku Duplicates). A to jen proto, že někdo kvůli celkem zbytečnému přidanému debugovacímu printk() v jedné funkci modifikoval data, která ta funkce vůbec neměla co měnit - a která za určitých okolností byla opravdu read only. Kdyby tam byl const, tak by ho chyba při překladu hned trkla, že dělá něco špatného, a řešil by to jinak (nebo by tam ten ladící příkaz vůbec nedal).
    5.2.2021 11:21 kralyk z abclinuxu | skóre: 29 | blog:  
    Rozbalit Rozbalit vše Re: Ukazatele - Jazyk C
    Výrazy s poli a indexy jsou ekvivalentní výrazům s ukazateli a posunem, tudíž je možné napsat pole a[i] jako *(a+i)
    Můžeš to napsat i jako i[a] ... kolegové to jistě ocení ;-)
    Nicméně výrazy jako a=pa nebo a++ nejsou správné, jelikož jméno pole není proměnná.
    No, proměnná to je, ale to přiřazení neprojde, protože, AFAIK
    1. Není dovoleno přiřazovat do proměnných/výrazů s typem pole.
    2. Typ pole implicitně kovertuje na pointer, ale opačná konverze není povolená.
    5.2.2021 13:31 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Ukazatele - Jazyk C

    IMHO nejnázornější příklad ukazující, že pole a pointer opravdu není totéž (i když to spolu úzce souvisí), je

      T *ptr;
      T array[10];
    
      printf("%zu, %zu\n", sizeof(ptr), sizeof(array));
    
    5.2.2021 17:42 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: Ukazatele - Jazyk C
    Pointer a polia su to iste.

    Plus ale tento specialny zapis definovania polia hovori aj, ze vznika na zasobniku z vopred danou velkostou. Pokial vie sizeof() velkost, tak vracia velkost prvku, inac velkost datoveho typu. A tym ze si presne definoval velkost, tak vie aj jeho presnu velkost.

    Z definicie nevies, ci sa odkazuje na jednosmerne pole dat, alebo jeden prvok:
    void boo(char *bar) {…}
    debian.plus@protonmail.com
    5.2.2021 18:23 kralyk z abclinuxu | skóre: 29 | blog:  
    Rozbalit Rozbalit vše Re: Ukazatele - Jazyk C
    Pointer a polia su to iste.
    Ne, nejsou, jsou to různé datové typy.
    Agent avatar 6.2.2021 11:36 Agent | blog: Life_in_Pieces | HC city
    Rozbalit Rozbalit vše Re: Ukazatele - Jazyk C
    Chápu to tak, že když udělám:

    char *retezec1 = "Nazdar";

    char retezec2[] = "Nazdar";

    Tak bych řekl, že rozdíl je hlavně v tom, že s prvním nemohu manipulovat, je jen pro čtení, s druhým ano. Nevím, jak je ta která struktura reprezentovaná na nízké úrovni, na úrovni strojáku, ale nedivil bych se, kdyby to bylo stejný akorát tam bude nějaká "omáčka" okolo dávající tomu nějaké vlastnosti. Ale nevim.
    Nevěděl zpočátku, co si počít, jak žít, co dělat, ale brzy se vpravil do role samotáře.
    6.2.2021 15:15 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Ukazatele - Jazyk C

    Rozdíl tam bude, protože v prvním případě "Nazdar" bude globální konstanta, která v závislosti na kompilátoru může být i v read only sekci. Navíc překladač může dělat i taková kouzla, že např.

    char *str1 = "Nazdar";
    char *str2 = "zdar";
    

    použije jen jeden řetězec "Nazdar" a druhý pointer nechá ukazovat do něj. To je možné právě díky tomu, že string literal je automaticky only. Proto je v takovém případě lepší použít const, aby vás překladač varoval, pokud byste ho zkusil přepisovat.

    Oproti tomu to druhé je inicializace lokálního pole znaků, které je defaultně přepisovatelné. V praxi ale samozřejmě závisí na zbytku kódu, co s tím řetězcem dělá, protože po optimalizaci tam ve skutečnosti žádný string "Nazdar" nikde být ani nemusí.

    Agent avatar 6.2.2021 11:23 Agent | blog: Life_in_Pieces | HC city
    Rozbalit Rozbalit vše Re: Ukazatele - Jazyk C
    Ukazatel je proměnná, jejíž hodnota je adresa.

    A ukazatel sám o sobě je adresa, která leží na nějaké adrese. A ta adresa leží na nějaké adrese. A ta adresa......
    Nevěděl zpočátku, co si počít, jak žít, co dělat, ale brzy se vpravil do role samotáře.
    6.2.2021 15:56 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: Ukazatele - Jazyk C
    Aspon co sa tyka ukladania do pamete, tak pointer moze byt premenna. Ale co sa tyka vykonavania, tak sa s nou nemusi uz pracovat ako s obycajnou premennou. Totiz, nejake instrukcia v ASM pracuju len s adresou a adresa nemusi byt formatovo rovnaka ako premenna (napr. vecsia dlzka, ukladana v RAW ako offset+posun).
    debian.plus@protonmail.com
    xkucf03 avatar 6.2.2021 16:08 xkucf03 | skóre: 50 | blog: xkucf03
    Rozbalit Rozbalit vše Ukazatele – kam psát hvězdičku
    <flame-war> Chápu, že článek se věnuje C a ne C++, ale to jsem vážně jediný, komu vadí psát tu hvězdičku k názvu proměnné a kdo by ji psal raději k typu? </flame-war>
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    6.2.2021 17:19 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Ukazatele – kam psát hvězdičku

    Tohle je bohužel věc, která je navržená dost nešťastně. Na jednu stranu je pravda, že psát hvězdičku k typu je logičtější, hlavně když je tam inicializace:

    T *p = &x;  // kam  že to tu adresu přiřazujeme?
    T* p = &x;  // tady je to jasné, do p
    

    Jenže problém nastává u vícenásobných deklarací:

    T* p, x;    // tohle vypadá, jako by p a x měly stejný typ
    T *p, x;    // ale mají ho *p a x
    T* p, *q;   // a kam napsat tu druhou hvězdičku tady?
    

    Osobně se ale těm násobným deklaracím s pointery snažím vyhýbat.

    9.2.2021 15:15 Kate | skóre: 9
    Rozbalit Rozbalit vše Re: Ukazatele – kam psát hvězdičku
    Osobně je raději ani nepoužívám. Přijde mi to čitelnější i za cenu vyššího počtu řádků.

    Založit nové vlákno • Nahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.