Diskuze: Pomoc(pole a pointery)
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 16 zpráv z 16.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
kazdy prvok pola bude 1 lebo vo for loope kazdui iteraciu deklarujes i s hodnotou 0 , potom ho incrementujes , a potom tu hodnotu hodis do pola.
Sprav si globalny counter , resp mimo for loope scope
Jo to ma nenapadlo super.Len stále to akosi nefunguje
To i som si deklaroval nad
cyklus for.
#include<iostream>
using namespace std;
int main() {
int *pole = new int[6];//Vytvorenie pola 5prvkov,Alokalizacia 5 intov
int *p_pomocny = NULL;
int i = 0;
for(p_pomocny = pole; p_pomocny < pole + 6; p_pomocny++)
{
i++;
*p_pomocny = i;
cout << *pole << endl;
cout << "Hodnota i: " << i << endl;
}
Ještě detail, nepouzivej k vymazání pointeru makro NULL. NULL je ve výsledku nula. Místo toho ma C++ klíčové slovo nullptr. NULL se by se melo používat spis v C.
A co konkrétně Ti na tom nefunguje? Možná se diviš, proč to vypisuje stále stejný číslo. Je to tím, zenedefinujes index v poli, který se ma vypsat.
No mam problém stým že mi to vypisuje stale to isté čislo ked nechám vypísať prvky pola
A ako teda spravím aby mi vypisovalo každý prvok pola ? *pole[i] ? či to nie ?
Jo, musíš dereferencovat hodnotu na zadaném indexu. Správně by to mělo být:
*(pole[i])
To mam napísať pri výpise v cykle ? Nie ?
Možná chceš spíše napsat:
cout << *p_pomocny << endl;
nebo, pokud chceš vypsat právě zaplněnou položku pole:
cout << pole[p_pomocny - pole] << endl;
Už som to vyriešil tak že som pole vypísal pomocou for.Môžem to takto vypisovať keď pracujem s pointerami ?
for(int i = 0; i < 6; i++)
{
pole[i];
}
vyzkoušej a uvidíš:-) ...ale ano, můžeš, nebo můžeš místo pole[i] napsat *(pole+i);
Jinak když napíšeš pole, je to adresa počátku (typově int*), pole+i je adresa i-tého prvku v poli, tj jeho hodnotu získáš dereferencí (*(pole+i)).
Radek Chalupa
Ďakujem za rady, čiže *(pole+i); je z hladiska rýchlosti programu lepšia
alternatíva ako pole[i] ? Chápem to správne ? Robíte aj online poradenstvo ?
Myslím to v tom zmysle že ak by som náhodou niečo nepochopil z "online
návodov" vysvetlili by ste mi to cez skype ? Ak áno aká je cena ? Kľudne sa
mi môžte ozvať do SZ. Ďakujem 
Doporučuju vyzkoušet zkompilovat obě varianty a prohlédnout vyslednej output hexem.
Vyjde to nastejno, resp. striktně řečeno záleží jak to sestaví ten který kompilátor a linker. Samozřejmě výsledek (v assembleru a strojovém kódu) se bude lišit podle sestavení release vs debug. Kromě porovnání binárního kódu jak zmínil kolega výše, můžeš (v release sestavení nejlépe) dát na příslušné místo breakpoint a při zastavení zvolit "goto disassembly" (nebo něco podobného podle IDE které používáš) a uvidíš výsledek v assembleru.
Radek Chalupa
Zobrazeno 16 zpráv z 16.
