Potreboval by som spravit globalne pole o n prvkoch zvnutra nejakej funcie. Da sa to vobec?
Fórum › C / C++
Vytvaranie globalnych premennych vovnutri funkcie
Nechapem presne ako ty myslis - kde mas to pole deklarovane ? Vnutry tej funkcie alebo vonku ?
Ak vonku tak to moze kludne inicializovat z vnutra funkcie.
Ak vo vnutri funkcie tak to nie je globalne :) Mozes ale spravit funkciu, v ktorej to nadeklarujes ako static a ta nebude robit nic ine len vracat pointer na zaciatok toho pola.
1. možnost: Musíš ho mít nadeklarované venku jako globální a v té funkci ho jenom nainicializuješ.
2. možnost: Vytvoříš ho dynamicky přes new/malloc a vrátíš jako návratovou hodnotu nebo přes parametr
3. Možnost: Uděláš ho uvnitř funkce jako static a vrátíš ukazatel na něj. Takové pole je vlastně globální (zůstane stejné i po opuštění funkce), akorát není z venku funkce vidět. Ale pokud ta funkce vrátí nějaký ukazatel na takovou proměnnou, může si s tím každý dělat co chce i z venku.
No potrebujem ho deklarovat vo vnutri funkcie, kedze pocet prvkov sa meni.
Takze ak by som to chcel tym 3. sposobom tak by to malo ist asi takto
*bool make2darray(x,y){
static bool array[x][y];
return &array;
}
?
A co takhle globální ukazatel na pole a ukazatel na délku pole? A potom ve funci jenom inicializovat? Myslím, že je to nejjednodušší.
na to neni jedno reseni.. bud to alokujes jako jednorozmerne pole o velikosti x*y a pak podle toho budes pristupovat k prvkum
tj pole[y*pozice_druhy_rozmer + pozice_prvni_rozmer]
nebo se zamotat v poli ukazatelu .. akorat by slo pouzit pole[pozice_druhy_rozmer][pozice_prvni_rozmer]
jen alokace je trosicku slozitejsi.. musis nejdriv pripravi ten druhy rozmer a pak pro kazdou polozku jeste alokovat i pamet pro ten prvni rozmer
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Odosielanie premenných — založil Pali
Char_vloženie 2 premenných — založil Tvorca
Čítanie premenných z .txt — založil lukas.balaz
[C99] Velkosť premenných — založil Tango
Zmatok v premennych(zaciatocnik) — založil antiatlet
Moderátoři diskuze