Pointerre mutató pointer? Meghatározatlan mérető karakterlánc?
Sziasztok!
Az lenne a kérdésem, hogy az alábbi kódban miért lehet bármekkora méretű karakterláncot elhelyezni a tömbben?
A b változó egy pointerre mutató pointer nem? Akkor hogy adhatjuk meg egy pointernek karakterláncot értékként? (*b)
char *b[0];
int g=0;
int db=0;
while (a>0)
{
g=a%10;
switch (g)
{
case 0: *b="nulla"; break;
case 1: *b="egy"; break;
case 2: *b="ketto"; break;
case 3: *b="harom"; break;
case 4: *b="negy"; break;
case 5: *b="ot"; break;
case 6: *b="hat"; break;
case 7: *b="het"; break;
case 8: *b="nyolc"; break;
case 9: *b="kilenc"; break;
}
db+=strlen(*b);
a/=10;
}
Nem értem az egész logikát, ha a-t modolod 10 el, akkor miért osztod el a végén? A g egyáltalán minek, miért nem switch( a % 10 )?
Nem ismerem a nyelvet, de logikusnak tűnik, hogy a tömb mérete nem változik, csak felülírod az értékét.
Nyilván C nyelvről van szó (vagy C++, a lényegen nem változtat)
Az elején létrehoz egy 0 méretű pointertömböt (ezt én sem értem, hogy miért nem sima pointert hoz létre), aztán _helytelenül_ túlindexeli a 0 méretű tömböt, mert beleír az első elemébe (*b) egy char pointert, ami a literálra mutat (ez a része helyes, csak az nem, hogy invalid területre ír).
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!