abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 23:11 | Bezpečnostní upozornění

    Intel vydal 41 upozornění na bezpečnostní chyby ve svých produktech. Současně vydal verzi 20240514 mikrokódů pro své procesory řešící INTEL-SA-01051, INTEL-SA-01052 a INTEL-SA-01036.

    Ladislav Hagara | Komentářů: 0
    dnes 16:22 | IT novinky

    Společnost Raspberry Pi patřící nadaci Raspberry Pi chystá IPO a vstup na Londýnskou burzu.

    Ladislav Hagara | Komentářů: 0
    dnes 13:22 | IT novinky

    Google na své vývojářské konferenci Google I/O 2024 představil řadu novinek. Keynote byl věnován umělé inteligenci (DeepMind, Gemini, Responsible AI).

    Ladislav Hagara | Komentářů: 1
    dnes 12:33 | Bezpečnostní upozornění

    V Gitu bylo nalezeno 5 zranitelností. Opraveny jsou ve verzích 2.45.1, 2.44.1, 2.43.4, 2.42.2, 2.41.1, 2.40.2 a 2.39.4. Útočník může připravit repozitář tak, že při jeho klonování (git clone) může dojít ke spuštění libovolného kódu.

    Ladislav Hagara | Komentářů: 0
    dnes 04:11 | IT novinky

    Virtualizační softwary VMware Workstation Pro a VMware Fusion Pro jsou nově pro osobní použití zdarma. Softwary VMware Workstation Player a VMware Fusion Player končí.

    Ladislav Hagara | Komentářů: 2
    dnes 02:11 | Nová verze

    Linuxová distribuce Endless OS (Wikipedie) byla vydána ve verzi 6.0.0. Přehled novinek i s náhledy v příspěvku na blogu, poznámkách k vydání a také na YouTube.

    Ladislav Hagara | Komentářů: 0
    včera 15:44 | Nová verze

    Byl vydán Mozilla Firefox 126.0. Přehled novinek v poznámkách k vydání, poznámkách k vydání pro firmy a na stránce věnované vývojářům. Vylepšena byla funkce "Zkopírovat odkaz bez sledovacích prvků". Přidána byla podpora zstd (Zstandard). Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 126 je již k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    včera 15:22 | Nová verze

    Grafana (Wikipedie), tj. open source nástroj pro vizualizaci různých metrik a s ní související dotazování, upozorňování a lepší porozumění, byla vydána ve verzi 11.0. Přehled novinek v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    včera 14:55 | Nová verze

    Byla vydána nová verze 24.0 linuxové distribuce Manjaro (Wikipedie). Její kódové jméno je Wynsdey. Ke stažení je v edicích GNOME, KDE PLASMA a XFCE.

    Ladislav Hagara | Komentářů: 2
    včera 13:00 | Nová verze

    Byla představena oficiální rozšiřující deska Raspberry Pi M.2 HAT+ pro připojování M.2 periferii jako jsou NVMe disky a AI akcelerátory k Raspberry Pi 5. Cena je 12 dolarů.

    Ladislav Hagara | Komentářů: 2
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (74%)
     (5%)
     (10%)
     (10%)
    Celkem 279 hlasů
     Komentářů: 16, poslední včera 11:05
    Rozcestník

    Kam pisete *?

    4.8.2009 18:43 | Výšplechty

    sveho casu jsem mel nekolik vaznych diskuzi na tema kam psat hvezdicku, ktera rika, ze dany typ/promenna je vlastne ukazatel. dneska jsem na to narazil zas... kam hvezdicky pisete vy?!

           

    Hodnocení: 89 %

            špatnédobré        

    Anketa

    Kam pisete hvezdicky?
     (22 %)
     (6 %)
     (62 %)
     (6 %)
     (3 %)
    Celkem 124 hlasů

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

    Komentáře

    Vložit další komentář

    4.8.2009 18:48 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Kam pisete *?
    Pokud se dobře pamatuju, char *a, b deklaruje a jako ukazatel na char a b jako char, takže ač se mi to ani trochu nelíbí, považoval bych za jedině možné psát hvězdičku k identifikátoru. Ale naštěstí nepíšu – víme proč :-)
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    4.8.2009 18:52 Bilýgr
    Rozbalit Rozbalit vše Re: Kam pisete *?
    Jenže psát "char *a, b" tě nikdo nenutí, tudíž máš ty jiné možnosti :-P
    4.8.2009 19:34 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Kam pisete *?
    Jo jo, taky mám možnost udělat
    #define begin {
    #define end }
    a psát Pascal. Ale postupem času jsem dospěl k tomu, že aspoň v programování se držím nohama na zemi :-)
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    Marek Bernát avatar 4.8.2009 19:09 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Kam pisete *?

    Chcelo by to patchnúť C, aby umožňovalo zápis char* a, b (v zmysle "intuitívne správny zápis"). Som si istý, že by si aj ty na tom našiel svoje čaro a časom k tomuto jazyku a postupne sa tento jazyk naučil milovať :-D

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    4.8.2009 19:31 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Kam pisete *?
    Dovedu si představit, že bych byl schopný používat SPECS :-)
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    Marek Bernát avatar 4.8.2009 20:08 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Kam pisete *?

    Uau, vďaka tomu to C vyzerá skoro ako programovací jazyk :-)

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    4.8.2009 23:03 #Tom | skóre: 32 | blog: Inspirace, aneb co jsem kde vyhrabal
    Rozbalit Rozbalit vše Re: Kam pisete *?
    To jde teď jedině přes typedef. Škoda, že to nejde vyřešit pomocí závorek, jenže to by se zase pletlo s přetypováním. :-)
    oroborus avatar 4.8.2009 18:55 oroborus | skóre: 20 | blog: Bulanci
    Rozbalit Rozbalit vše Re: Kam pisete *?
    V ankete sa mi nepaci, ze tam nie su vsetky moznosti :), teda:

    char* foo(int* bar)
    char* foo(int * bar)
    char* foo(int *bar)


    char * foo(int* bar)
    char * foo(int * bar)
    char * foo(int *bar)


    char *foo(int* bar)
    char *foo(int * bar)
    char *foo(int *bar)


    Ja pisem char* foo(int *bar)
    4.8.2009 19:01 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
    Rozbalit Rozbalit vše Re: Kam pisete *?
    to spada pod volbu: ,,mam v tom system''
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    Marek Bernát avatar 4.8.2009 19:11 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Kam pisete *?

    To nie sú zďaleka všetky možnosti. Príklad: za splnu píšem "char* a", inak "char *a" :-)

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    4.8.2009 19:41 ::: | skóre: 14 | blog: e_lama
    Rozbalit Rozbalit vše Re: Kam pisete *?
    za splnu???
    AraxoN avatar 5.8.2009 02:02 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
    Rozbalit Rozbalit vše Re: Kam pisete *?

    Po česky "úplněk". :)

    Marek Bernát avatar 5.8.2009 11:17 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Kam pisete *?

    Pán v živote neprišiel do styku so slovenčinou? :-) Ad Váš návrh čeština/angličtina -> nechcem Vám przniť rodný jazyk (dosť na tom, že to robím svojmu vlastnému) a čo sa angličtiny týka, tak IMHO jej rozumie menej ľudí ako slovenčine, to za prvé a za druhé by na československom servere vyzerala angličtina veľmi podivne a bol by som asi prvý. Čo keby ste sa radšej Vy naučili trochu po slovensky? :-)

     

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    5.8.2009 13:04 ::: | skóre: 14 | blog: e_lama
    Rozbalit Rozbalit vše Re: Kam pisete *?
    anglictina ma aspon tu vyhodu ze kdyz nejaky slovo neznam tak si je najdu ve slovniku. To se slovenstinou bohuzel nefunguje a kdyz nejayk slovo neznam (a je jich celkem dost) tak mam proste smulu... Zkousel jsem i spln hledat v slovensko-anglickym slovniku, ale jaksi to neni v databazi...
    5.8.2009 13:05 ::: | skóre: 14 | blog: e_lama
    Rozbalit Rozbalit vše Re: Kam pisete *?
    jo a jeste neco. Ten samej slovnik mi rekl ze "full moon" se slovensky rekne "úplnok", ne "spln"... :-/
    Marek Bernát avatar 5.8.2009 14:30 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Kam pisete *?

    Odporúčam nepoužívať prapodivné slovníky, ale trochu sa pri hľadaní snažiť. Úplnok nie je slovenské slovo a je to zjavne deformácia češtiny (v slovenčine sa často nesprávne používajú čechizmy rada -> správne má byť rad, sada -> správne má byť súprava, je toho dosť), to je dané tou previazanosťou našich jazykov (hoci Slovensko je Českom určíte ovplyvňované viac, než je tomu naopak).

    Príklad dobrého slovníka (pretože je viac-menej oficiálny a navyše je výkladový, čo by Čechovi malo vyhovovať viac ako obskurné preklady do angličtiny) je krátky slovník slovenského jazyka -- spln si tam môžete nájsť.

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    Luk avatar 4.8.2009 20:20 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
    Rozbalit Rozbalit vše Re: Kam pisete *?
    Píšu hvězdičku téměř zásadně (tj. kromě případů, že upravuji cizí kód a chci držet stejný styl) k typu, tedy např. char* a. Přijde mi to mnohem názornější a srozumitelnější - například i proto, že deklarace funkce může vypadat takto:
    char* my_function();
    Hvězdička je u typu, což je v souladu s tím, že se týká typu návratové hodnoty. Kdyby byla u názvu funkce, bylo by to docela uhozené. Totéž jako pro pointerovou hvězdičku platí samozřejmě i pro referenční ampersand, tedy třeba std::string& s.
    Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
    4.8.2009 20:28 ::: | skóre: 14 | blog: e_lama
    Rozbalit Rozbalit vše Re: Kam pisete *?
    ne, nebylo by to uhozene, ale bylo by to v souladu s filozofii C ;-)

    K tvemu prikladu. Prototyp:

    char *my_function()

    znamena, ze pokud nekde v kodu pouziju *my_function() tak dostanu char.


    Problem je ze hodne programatoru nechape jak tohle v C funguje a potom vymysli zvrhlosti jako char*. Pritom, technicky vzato, nic jako datovy typ char* v C neexistuje...
    Luk avatar 4.8.2009 21:02 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
    Rozbalit Rozbalit vše Re: Kam pisete *?
    pokud nekde v kodu pouziju *my_function() tak dostanu char
    To je právě nebezpečný omyl. Ta funkce vrací ukazatel na char (ponechme teď stranou to, že pokud bude funkce vypadat přesně takto, nebude volající znát délku dat), ne samotný char. Použití *my_function() může snadno znamenat, že se vyrobí memory leak (viz např. strdup()). Proto je důležité, že vrací právě ukazatel a ne hodnotu získanou dereferencí ukazatele (což by nastalo při výše uvedeném použití funkce).
    Pritom, technicky vzato, nic jako datovy typ char* v C neexistuje
    Ale existuje. Nejde o to, že jdou (narozdíl od C++) typy ukazatelů prasit přes sebe. Prostě ten typ znamená, že jde o ukazatel ukazující na hodnotu typu char.
    Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
    4.8.2009 21:50 ::: | skóre: 14 | blog: e_lama
    Rozbalit Rozbalit vše Re: Kam pisete *?
    To je právě nebezpečný omyl.

    To prave neni zadny omyl. To je princip, kterym se v C/C++ deklaruji promene a funkce. Stejne tak napr:
    int *(*a[10])();
    znamena ze pokud nekde v kodu pouziju *(*a[10])() tak dostanu int. A aby tohle byla pravda tak a musi byt pole 10 ukazatelu na funkce vracejici ukazatel na int... urcite to neznamena ze a je typu int*(* nebo ja nevym jakyho...

    Ta funkce vrací ukazatel na char

    ano, abych po zapsani *my_function() ziskal char tak my_function musi byt funkce ktera vraci ukazatel na char.

    Použití *my_function() může snadno znamenat, že se vyrobí memory leak

    ale o to tady vubec nejde. Jde o to ze vyraz *my_function() ma datovy typ char. To jestli je vhodny ten vyraz v nejakym kontextu pouzit je vedlejsi...

    Ale existuje. Nejde o to, že jdou (narozdíl od C++) typy ukazatelů prasit přes sebe. Prostě ten typ znamená, že jde o ukazatel ukazující na hodnotu typu char.

    to si me nepochopil. Ja jsem nerekl ze C (C++) nema datovy typ ukazatel na char. Ja jsem rekl ze nema typ char*. Neboli ze retezec char* neni jmeno datoveho typu!
    4.8.2009 23:22 Deleted [8409] | skóre: 14 | blog: darkblog
    Rozbalit Rozbalit vše Re: Kam pisete *?
    Já to dělám stejně, podle mě to má logiku.
    5.8.2009 14:02 Ondrej 'SanTiago' Zajicek
    Rozbalit Rozbalit vše Re: Kam pisete *?

    > Přijde mi to mnohem názornější a srozumitelnější

    Az na problem zmineny Ladickem - radek 'char* a,b;' zaklada jednu pointerou a jednu charovou promennou. Tenhle priklad ukazuje, ze v gramatice jazyka C se ta hvezdicka vaze tesneji k jmenu promenne nez k jmenu typu, proto dava smysl ji psat bliz ke jmenu promenne.

    Luk avatar 5.8.2009 15:16 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
    Rozbalit Rozbalit vše Re: Kam pisete *?
    Zápis char *a, b; považuji za prasárnu a nepoužívám ho. Už proto, že se držím zásady inicializace proměnných hned při deklaraci. Čili onen zápis bych přetransformoval například na:
    char* a = NULL;
    char b = '\0';
    
    Je to sice delší, ale mnohem srozumitelnější. Obecně se snažím vyhýbat všemu, co je sice na počet znaků úsporné (a ukazuje to syntaktickou sílu C), ale co je špatně srozumitelné a komplikuje to čtení nejen ostatním lidem, ale i mně samotnému, když se do toho zdrojáku podívám po delší době.
    Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
    4.8.2009 20:58 Adolf
    Rozbalit Rozbalit vše Re: Kam pisete *?

    Ja * nepisem...

    kouby avatar 4.8.2009 21:06 kouby | skóre: 27 | blog: init | Praha
    Rozbalit Rozbalit vše Re: Kam pisete *?

    Chybi mi tam volba: hvezdicku nepisu. :-)

    Ale kdyz uz pisu, tak k identifikatoru.

    That's thirty minutes away. I'll be there in ten.
    4.8.2009 21:14 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Kam pisete *?

    To mě překvapuje, jak málo hlasů získalo „doprostřed“. Já píšu mezery v postatě všude, kde být mohou, protože bez nich se mi ten zdroják děsně těžko čte. Jediná výjimka jsou unární operátory, tedy například dereference. Jenže deklarace není dereference, takže v deklaraci píšu mezery z obou stran. V C ta hvězdička logicky patří k identifikátoru, to je jasné, ale mezerou se podle mě nikdy nic nezkazí. Jedině se to bude rychleji a pohodlněji číst.

    Marek Bernát avatar 4.8.2009 21:42 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Kam pisete *?

    Písanie medzier , hoci zaujímavé , pôsobí na môj zrak veľmi nepríjemne :-)

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    4.8.2009 23:46 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Kam pisete *?

    To je samozřejmě individuální a každý to vnímá jinak. Například

    funkce(parametr, parametr);
    

    mi připadá jako nečitelný chomáč nějakých znaků, zatímco

    funkce( parametr, parametr );
    

    přečtu v pohodě. Někoho zase ty mezery dost iritují, tak už to bývá. ;-)

    AraxoN avatar 5.8.2009 02:08 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
    Rozbalit Rozbalit vše Re: Kam pisete *?

    Podľa mňa toto:

    funkce(parametr, parametr);
    

    je rozumný kompromis medzi pracnosťou a čitateľnosťou. Ak chceš byť naozaj dôsledný, tak Ti tám chýba ešte zopár medzier:

    funkce ( parametr , parametr ) ;
    

    Pch, medzerový fetišista! :-D

     

    5.8.2009 14:18 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Kam pisete *?

    Jestli je sahání na mezerník pracné, to ať už každý posoudí sám. Já na mezerník skoro sahat nemusím, protože Eclipse mi v C i C++ ty mezery při automatickém doplňování vytváří sám, na základě mnou nakonfigurovaného code style.

    Ten druhý zápis... No... Proti gustu žádný dišputát, samozřejmě, ale mezera za jménem funkce působí dost rušivě, stejně jako mezery před interpunkčními znaménky, na které běžný čtenář prostě není zvyklý. Takže bych to s těmi mezerami zase až tak nepřeháněl.

    Důvod, proč mívám mezery za levou a před pravou závorkou, jsem už vysvětloval. Když si chce člověk co nejrychleji přečíst nějaký kus zdrojáku, funkce(parametr, parametr) je nepřehledný shluk, nad kterým je potřeba se zastavit, zatímco s mezerami se to čte nesrovatelně rychleji. Ale to platí pro mě. Každý to vnímá jinak. Nemyslím si, že by se dalo jednoznačně říct, co je „rozumný kompromis“.

    4.8.2009 22:02 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
    Rozbalit Rozbalit vše Re: Kam pisete *?
    ja to pisu obdobne kvuli citelnosti, protoze jsem si vymyslel uvahu, ze "hvezdicka" je jenom modifikator (promenne/typu) stejne jako se pouziva "unsigned", "static", "volatile",... a mezi tema se taky pise mezera... navic se tim rozumne resi dilema, jestli to psat doleva nebo doprava ;-]
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    4.8.2009 21:21 pepa z depa
    Rozbalit Rozbalit vše Re: Kam pisete *?
    Dá se v C/C++ programovat i bez ukazatelů?
    Luk avatar 4.8.2009 22:26 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
    Rozbalit Rozbalit vše Re: Kam pisete *?
    V C++ prakticky bez problémů (když pomineme občasnou potřebu využívat některé céčkové funkce). V C jen ve specifických případech.
    Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
    5.8.2009 01:12 Kvakor
    Rozbalit Rozbalit vše Re: Kam pisete *?
    Specifické případy ... no, když si uvědomíme, že se na veškeré "vysokoúrovňové" I/O potřebuje ukazatel na strukturu FILE, všechny operace s řetězci potřebují ukazatel na char (i literál "Hello world" je konstantní ukazatel), všechna pole jsou vlastně maskované ukazatele, většina funkcí na vstup z vnějšku (typu scanf()) potřebuje ukazatel, jediný způsob předávání proměnné odkazem je přes ukazatel na ní a druhý parametr vstupního bodu programu - funkce main(int argc, char *argv[]) - je pole ukazatelů na řetězce, tak toho zbývá opravdu celkem málo, kde by ukazatele nebyly třeba. Právě proto bylo vymyšlené C++, kde se dá bez ukazatelů obejít, a Java a spol., kde ukazatele nejsou třeba vůbec, protože C je ukazately doslova zadrátované :-)

    Luk avatar 5.8.2009 13:33 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
    Rozbalit Rozbalit vše Re: Kam pisete *?
    Těmi specifickými případy jsem myslel to, že se třeba něco vypočítá a vyhodí na standardní výstup (bez explicitního použití ukazatelů). Je jich ale zcela zanedbatelné procento.
    Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
    =^..^= AmigaPower® avatar 4.8.2009 23:18 =^..^= AmigaPower® | skóre: 30 | blog: BLB | Praha
    Rozbalit Rozbalit vše Re: Kam pisete *?
    ...já píšu "*" jen v: "*íča", "p*ča", "pí*a", "píč*" a podobně. :-D
    4.8.2009 23:29 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
    Rozbalit Rozbalit vše Re: Kam pisete *?
    a mas v tom system?
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    =^..^= AmigaPower® avatar 4.8.2009 23:55 =^..^= AmigaPower® | skóre: 30 | blog: BLB | Praha
    Rozbalit Rozbalit vše Re: Kam pisete *?
    System je pro blbce, inteligent zvládá chaos! :-D
    5.8.2009 06:46 Lrrr
    Rozbalit Rozbalit vše Re: Kam pisete *?
    Tak nám ten svůj systém popiš.
    =^..^= AmigaPower® avatar 5.8.2009 11:06 =^..^= AmigaPower® | skóre: 30 | blog: BLB | Praha
    Rozbalit Rozbalit vše Re: Kam pisete *?
    ha, ha... . .

    Založit nové vláknoNahoru

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