Velikost pole – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Velikost pole – C / C++ – Fórum – Programujte.comVelikost pole – C / C++ – Fórum – Programujte.com

 

fnenks+1
Stálý člen
30. 7. 2011   #1
-
0
-

Zdravim, pokud chci zjistit velikost pole, staci pouzit "sizeof", napr:

int nazev_pole[5];
int velikostpole = sizeof(nazev_pole)/sizeof(nazev_pole[0]);     //velikost pole = 5

Problem je ze nevim jak zjistit velikost pole, pokud je vicerozmerne, napr:

int nazev_pole[4][8];

Potrebuji do jedne promenne dosadit 4 a do druhe 8.

Nahlásit jako SPAM
IP: 88.101.84.–
KIIV
~ Moderátor
+43
God of flame
30. 7. 2011   #2
-
0
-

na to klidne pouzij #define ... stejne to nemuzes nijak menit za behu

Nahlásit jako SPAM
IP: 94.112.35.–
Program vždy dělá to co naprogramujete, ne to co chcete...
fnenks+1
Stálý člen
30. 7. 2011   #3
-
0
-

Tak jsem si s tim chvilku hral a prisel jsem na to :))

int nazev_pole[5][8];
int rozmer_x = sizeof(nazev_pole)/sizeof(nazev_pole[0]);                          //rozmer_x = 5
int rozmer_y = (sizeof(nazev_pole)/sizeof(nazev_pole[0][0]))/rozmer_x;      //rozmer_y = 8

Ale mozna to fakt nebudu potrebovat, jeste nevim co se da s poli vsechno delat :)), tak dik

Nahlásit jako SPAM
IP: 88.101.84.–
cerf
~ Anonymní uživatel
4 příspěvky
30. 7. 2011   #4
-
0
-

Odkázání na #define je sice hezká rada, ale pochopení principu, proč se je možné rozměry pole zjistit právě tak, jak na to fnenks nakonec správně přišel,
je rozhodně užitečnější. Navíc tohle se může hodit. Třeba v případě, kdy máš pole řetězců používaných v programu:

const char strArr[] = {
"Open",
"Close",
"Cancel"
};

Je to mnohem lepší způsob, než určit velikost pole přímo

const int ARR_SIZE = 3;

const char strArr[ARR_SIZE] = {
"Open",
"Close",
"Cancel"
};

protože při rozšíření pole o další řetězec je nutné změnit i hodnotu ARR_SIZE

Nahlásit jako SPAM
IP: 188.246.100.–
cerf
~ Anonymní uživatel
4 příspěvky
30. 7. 2011   #5
-
0
-

I když fnenksovo řešení nevypovídá ani tak o pochopení principu, jako spíš o metodě pokus - omyl :)

int pole[5][8];
int y = sizeof (pole) / sizeof (pole[0]);          //5
int x = sizeof (pole[0]) / sizeof (pole[0][0]);  //8

Nahlásit jako SPAM
IP: 188.246.100.–
fnenks+1
Stálý člen
30. 7. 2011   #6
-
0
-

no ja bych rekl, ze jsem princip pochopil, pomoci sizeof zjistim kolik bajtu ma cele pole, i kolik bajtu ma samotne pole[0], tzn vydelenim zjistim velikost pole

Nahlásit jako SPAM
IP: 88.101.84.–
Ivan
~ Anonymní uživatel
28 příspěvků
25. 1. 2013   #7
-
0
-

Vícerozměrné pole lze simulovat polem jednorozměrným, takže pole 4x8 lze vytvořit jako jednorozměrné pole o 32 prvcích a k jednotlivým prvkům přistupovat jako k prvkům dvourozměrného pole pomocí nějaké funkce např.

int array_ij_item(int i, int j) {

   return array_ij[--i * max_j + --j];

}

kde array_ij je jednorozměrné pole o 32 prvcích a max_j je velikost druhého rozměru, v daném případě 8.

Nahlásit jako SPAM
IP: 85.71.182.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 72 hostů

Podobná vlákna

Náhodná velikost pole — založil Jan

Funkce na velikost pole — založil Porcepoque

Velikost pole struktur — založil Redby

Velikost obrazku — založil bloudil

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý