Byla vydána beta verze Linux Mintu 22.2 s kódovým jménem Zara. Podrobnosti v přehledu novinek a poznámkách k vydání. Vypíchnout lze novou XApp aplikaci Fingwit pro autentizaci pomocí otisků prstů nebo vlastní fork knihovny libAdwaita s názvem libAdapta podporující grafická témata. Linux Mint 22.2 bude podporován do roku 2029.
Provozovatel internetové encyklopedie Wikipedie prohrál v Británii soudní spor týkající se některých částí nového zákona o on-line bezpečnosti. Soud ale varoval britského regulátora Ofcom i odpovědné ministerstvo před zaváděním přílišných omezení. Legislativa zpřísňuje požadavky na on-line platformy, ale zároveň čelí kritice za možné omezování svobody slova. Společnost Wikimedia Foundation, která je zodpovědná za fungování
… více »Byla vydána verze 2.0.0 nástroje pro synchronizaci dat mezi vícero počítači bez centrálního serveru Syncthing (Wikipedie). Přehled novinek na GitHubu.
Americký prezident Donald Trump se v pondělí osobně setkal s generálním ředitelem firmy na výrobu čipů Intel Lip-Bu Tanem. Šéfa podniku označil za úspěšného, informují agentury. Ještě před týdnem ho přitom ostře kritizoval a požadoval jeho okamžitý odchod. Akcie Intelu v reakci na schůzku po oficiálním uzavření trhu zpevnily asi o tři procenta.
Byl vydán Debian GNU/Hurd 2025. Jedná se o port Debianu s jádrem Hurd místo obvyklého Linuxu.
V sobotu 9. srpna uplynulo přesně 20 let od oznámení projektu openSUSE na konferenci LinuxWorld v San Franciscu. Pokuď máte archivní nebo nějakým způsobem zajímavé fotky s openSUSE, můžete se o ně s námi podělit.
Byl vydán Debian 13 s kódovým názvem Trixie. Přehled novinek v poznámkách k vydání.
WLED je open-source firmware pro ESP8266/ESP32, který umožňuje Wi-Fi ovládání adresovatelných LED pásků se stovkami efektů, synchronizací, audioreaktivním módem a Home-Assistant integrací. Je založen na Arduino frameworku.
Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána v nové verzi 2025.8.
Herní studio Hangar 13 vydalo novou Mafii. Mafia: Domovina je zasazena do krutého sicilského podsvětí na začátku 20. století. Na ProtonDB je zatím bez záznamu.
smyslem char** je změnit někde adresu ukazatele
Pokud chceme, aby se změna obsahu ukzatele (tedy kam ukazuje) projevila i vně funkce (tedy jakoby se předávalo odkazem), tak pracujeme s "**ret" (v hlavičce funkce). Díky!
typ char ** char * char adresa: 2008 2004 2000 data: 2004 -> 2000 -> 'A'Rozdíl mezi těma funkcema ve volání může být třeba takový:
char c = 'A'; char * cp = &c; /*cp == 2000*/ char ** cpp = &cp; /* cpp == 2004*/ /*volani se stejnym vysledkem*/ funkce1(&c); funkce1(cp); /*volani se stejnym vysledkem*/ funkce2(&cp); funkce2(cpp);pokud navíc:
int funkce2(char **ret) { return funkce1(*ret); }Tak se to všechno bude chovat stejně.
Ty Cckove komentare tomu zrovna nepomahaji :)char c = 'A'; char * cp = &c; /*cp == 2000*/
char c = 'A'; char * cp = &c; // cp == 2000 char ** cpp = &cp; // cpp == 2004
Děkuju moc. Už to chápu.
Nějak nechápu, co na tom chceš ještě vysvětlit. Připadá mi, že v tom hledáš nějakou magii, která v tom není.
První funkce přebírá ukazatel na znak, druhá funkce přebírá ukazatel na ukazatel na znak. Možná ti pomůže vysvětlení na anglické Wikipedii. A nebo si to zkus načrtnout na papír.
Ukazatele se dají obecně indexovat jako pole (dokonce i do mínusu), takže *ret
ve funkci1 je skutečně to samé jako ret[0]
v téže funkci (jak se tu řešilo nedávno, ret[0]
a 0[ret]
, je defakto *((ret) + (0))
, což je zas ekvivalentní k *ret
). Rozdíl mezi ukazatelem a polem se ukáže v momentě, kdy se pokusíš zjistit jejich velikost.
A teď jsem tě možná pomátl dočista. :)
a[1000] -> 'A','B','C','D'...'\0'Druha funkce2 bere ukazatel na ukazatele na chary, cili od adresy ret mas seznam cisel, ktere udavaji adresy, kde zacinaji jednotlive chary. Tady je ale char **a a[3000] -> 1000,1200,1400,1600
1000 -> 'a','a','a','a',...'\0' 1200 -> 'e','e','e','e',...'\0' 1400 -> 'c','c','c','c',...'\0'nebo se pletu?
int funkce1(char *ret) { /* Můžu si tedy dovolit toto: */ *ret = 'A'; }ne tak uplne. treba volani
funkce1("Foobar");
ti neprojde, protoze retezec je s nejvetsi pravdepodobnosti v casti pameti, ktera se neda menit.
"Foobar"
je, afaik, const char*
.C prekladac to dovoli, protoze se nemeni ukazatel ale pamet na kterou ukazuje. C++ to nedovoli.Takhle použitý const právě naopak znamená, že se *nesmí měnit obsah té paměti. * Mnohé překladače pouze varují.
Děkuju za názor.
Tiskni
Sdílej: