NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 8 - Pole v C++

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Petr Štechmüller
DarkCoder:9.2.2017 21:46

V C nemáš předem jisté, že paměť o kterou jsi si řekl bude prázdná

Nemáš tak úplně pravdu. Toto platí o lokálních proměnných. Lokální proměnné, které nejsou inicializovány mohou totiž obsahovat libovolnou neznámou hodnotu. I když některé překladače jazyka C nastavují neinicializované proměnné na nulu, určitě bych se na to nespoléhal. Kdežto globální proměnné, které nejsou explicitně inicializovány, jsou automaticky nastaveny na nulu. Stejně tak vytvářím-li proměnnou dynamicky pomocí funkce calloc(), je po úspěšné alokaci inicializován každý prvek na nulu.

Odpovědět
9.2.2017 21:46
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Zbyňa
Člen
Avatar
Zbyňa:9.4.2017 2:05

vůbec tomuhle nerozumím ... popište mi tedy rozdíl mezi lokální a globální proměnnou základního datového typu v c a c++ tak berme v úvahu tenhle kód

int main()
{
  int local;
  cin >> local;
  int* policko = new int[local];
  // your code
 delete [] policko;
}

/////////////////// dalsi kod k porovnani

int *p;
int i;
int main()
{
  cin >> i;
  *p = new int[i];
// tvuj kod
delete [] p;
 return 0;
}
 
Odpovědět
9.4.2017 2:05
Avatar
Odpovídá na Zbyňa
Neaktivní uživatel:9.4.2017 3:04

K prvnímu kódu:
Nemáš tam globální proměnnou, ta se deklaruje mimo funkci. To co ty tam máš jsou dvě proměnné, první uložena v zásobníku(stack) a druhá na haldě(heap).
K druhému kódu:
Obě proměnné jsou globální, první uložená na haldě a druhá v zásobníku. Před zavoláním funkce main obě mají definovanou hodnotu, první obsahuje nullptr(null pointer) a druhá 0.

Rozdíl:

int main()
{
  int local;
  cout << local << endl; // Nedefinované chování
}

vs.

int local;
int main()
{
  cout << local << endl; // 0
}
Odpovědět
9.4.2017 3:04
Neaktivní uživatelský účet
Avatar
Zbyňa
Člen
Avatar
Odpovídá na Neaktivní uživatel
Zbyňa:9.4.2017 21:04

1 kod mimo tělo funkce main mám tam deklarovanou proměnnou i a ukazatel pouze ukazatel pls neslovíčkař já vím já vím účel toho bylo alokovat dynamické pole mimo funkci main pomocí operátoru new[] a pak to same smazat pomoci operatoru delete[] pole; blbec jsem tam mohl dat i verzi s malloc ale jsem linej jak ves XD muzes me za to lincovat nebo machat ve Vltave XD takze este raz bez kodu chtel jsem mit globalni alokaci dynamickeho pole napriklad int a v druhe verzi lokalniho. Pozor tady sranda nekonci to same s verzi malloc a calloc a free jestli mi rozumis dekuji za dalsi odpoved

 
Odpovědět
9.4.2017 21:04
Avatar
Zbyňa
Člen
Avatar
Zbyňa:9.4.2017 21:08

ah krom toho to byl ucel mit dve verze programu s ruznymi stytly alokace pameti a tak jsi mi odpovedel takze vlastne dekuji predchozi prispevek ber prosim jako novou otazku dekuji mockrat za trpelivost a ochotu

Editováno 9.4.2017 21:09
 
Odpovědět
9.4.2017 21:08
Avatar
Jaroslav Dubánek:11.8.2017 9:30

Jaký problém může mít VS s tímhle kódem?

#include <iostream>
#include <string>
using namespace std;

int main(void) {


const int delkaPole = 10;
int pole[delkaPole];
for (int i = 0; i < delkaPole; i++)
        pole[i] = i + 1;

for (int i = 0; i < delkaPole; i++)
        cout << pole[i] << ' ';
        return 0;
}

a vůbec se mi nespustí program.

Poradil by mi někdo, jak nainstalovat VS 2017 tak, aby mi tam fungovalo vše ohledně C++, prosím? Máme mezi sebou asi něco nevyřčenýho, potřeboval bych manželskýho poradce :D

Odpovědět
11.8.2017 9:30
Život je ve skutečnosti strašně jednoduchej.
Avatar
Odpovídá na Jaroslav Dubánek
Zdeněk Pavlátka:11.8.2017 9:55

Neměl by mít problém žádný... Co ti píše za chybu?

Odpovědět
11.8.2017 9:55
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovědět
12.8.2017 12:02
Život je ve skutečnosti strašně jednoduchej.
Avatar
Odpovídá na Zdeněk Pavlátka
Jaroslav Dubánek:12.8.2017 18:33

Tak už to mám. Moje chyba samozřejmě.

#include <algorithm>

Double facepalm, protože to je už podruhý.

Odpovědět
12.8.2017 18:33
Život je ve skutečnosti strašně jednoduchej.
Avatar
Odpovídá na Jaroslav Dubánek
Zdeněk Pavlátka:12.8.2017 19:52

#include <algorithm>

???
nic z knihovny algorithm v tom kódu co jsi tu ukázal nepoužíváš...

Odpovědět
12.8.2017 19:52
Kolik jazyků umíš, tolikrát jsi programátor.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 46.