Forum » Programiranje » Statična tabela v c++ ?
Statična tabela v c++ ?
mercury ::
Živjo fantje,
V enem programu sem dobil nekaj kar bi mi znalo koristiti v prihodnje. Zanima me, ali pomeni naslednji zapis tabelo podatkov, ki pa se nekako razlikuje od navadnega array-a?
static yyconst short int yy_acclist[288] =
{ 0,
43, 40, 42, 41, 42, 32, 40, 42, 40, 42,
40, 42, 40, 42, 34, 37, 40, 42, 34, 37,
40, 42, 37, 40, 42, 37, 40, 42, 37, 40,
42, 37, 40, 42, 37, 40, 42, 37, 40, 42,
37, 40, 42, 37, 40, 42, 37, 40, 42, 37,
40, 42, 40, 42, 41, 42, 1, 32, 40, 42,
40, 42, 40, 42, 40, 42, 34, 37, 40, 42,
34, 37, 40, 42, 37, 40, 42, 37, 40, 42,
37, 40, 42, 37, 40, 42, 37, 40, 42, 37,
40, 42, 37, 40, 42, 37, 40, 42, 37, 40,
42, 37, 40, 42, 38, 39, 34, 37, 37, 37,
37, 37, 37, 37, 37, 25, 37, 26, 37, 19,
37, 15, 37, 17, 37, 37, 37, 37, 21, 37,
37, 9, 37, 33, 37, 37, 37, 37, 37, 37,
37, 1, 38, 39, 34, 37, 37, 37, 37, 37,
37, 37, 37, 25, 37, 26, 37, 19, 37, 15,
37, 17, 37, 37, 37, 37, 21, 37, 37, 9,
37, 33, 37, 37, 37, 37, 37, 37, 37, 36,
39, 35, 37, 5, 37, 4, 37, 8, 37, 37,
11, 37, 37, 18, 37, 14, 37, 13, 37, 12,
37, 20, 37, 16, 37, 22, 37, 2, 37, 24,
37, 29, 37, 30, 37, 7, 37, 27, 37, 28,
37, 6, 37, 10, 37, 36, 39, 35, 37, 5,
37, 4, 37, 8, 37, 37, 11, 37, 37, 18,
37, 14, 37, 13, 37, 12, 37, 20, 37, 16,
37, 22, 37, 2, 37, 24, 37, 29, 37, 30,
37, 7, 37, 27, 37, 28, 37, 6, 37, 10,
37, 23, 37, 37, 3, 37, 23, 37, 37, 3,
37, 37, 37, 31, 37, 31, 37
} ;
Če gre za neke vrste tabelo, mi potem lahko razložite, kako točno se jo definira ( kaj pomeni v tem primeru yyconst in kaj yy_acclist[288] ). Seveda me še zanima, kako se iz take tabele bere.
Lep pozdrav,
V enem programu sem dobil nekaj kar bi mi znalo koristiti v prihodnje. Zanima me, ali pomeni naslednji zapis tabelo podatkov, ki pa se nekako razlikuje od navadnega array-a?
static yyconst short int yy_acclist[288] =
{ 0,
43, 40, 42, 41, 42, 32, 40, 42, 40, 42,
40, 42, 40, 42, 34, 37, 40, 42, 34, 37,
40, 42, 37, 40, 42, 37, 40, 42, 37, 40,
42, 37, 40, 42, 37, 40, 42, 37, 40, 42,
37, 40, 42, 37, 40, 42, 37, 40, 42, 37,
40, 42, 40, 42, 41, 42, 1, 32, 40, 42,
40, 42, 40, 42, 40, 42, 34, 37, 40, 42,
34, 37, 40, 42, 37, 40, 42, 37, 40, 42,
37, 40, 42, 37, 40, 42, 37, 40, 42, 37,
40, 42, 37, 40, 42, 37, 40, 42, 37, 40,
42, 37, 40, 42, 38, 39, 34, 37, 37, 37,
37, 37, 37, 37, 37, 25, 37, 26, 37, 19,
37, 15, 37, 17, 37, 37, 37, 37, 21, 37,
37, 9, 37, 33, 37, 37, 37, 37, 37, 37,
37, 1, 38, 39, 34, 37, 37, 37, 37, 37,
37, 37, 37, 25, 37, 26, 37, 19, 37, 15,
37, 17, 37, 37, 37, 37, 21, 37, 37, 9,
37, 33, 37, 37, 37, 37, 37, 37, 37, 36,
39, 35, 37, 5, 37, 4, 37, 8, 37, 37,
11, 37, 37, 18, 37, 14, 37, 13, 37, 12,
37, 20, 37, 16, 37, 22, 37, 2, 37, 24,
37, 29, 37, 30, 37, 7, 37, 27, 37, 28,
37, 6, 37, 10, 37, 36, 39, 35, 37, 5,
37, 4, 37, 8, 37, 37, 11, 37, 37, 18,
37, 14, 37, 13, 37, 12, 37, 20, 37, 16,
37, 22, 37, 2, 37, 24, 37, 29, 37, 30,
37, 7, 37, 27, 37, 28, 37, 6, 37, 10,
37, 23, 37, 37, 3, 37, 23, 37, 37, 3,
37, 37, 37, 31, 37, 31, 37
} ;
Če gre za neke vrste tabelo, mi potem lahko razložite, kako točno se jo definira ( kaj pomeni v tem primeru yyconst in kaj yy_acclist[288] ). Seveda me še zanima, kako se iz take tabele bere.
Lep pozdrav,
OwcA ::
yyconst je nestandarden simbol, poglej kako je definiran.
yy_acclist je ime spremenljivke.
[288] jo deklarira kot tabelo z 288 elementi (torej tečejo indeksi od 0 do 287).
static ima dva pomena. Če gre za lokalno spremenljivko (definirano znotraj neke funkcije), se njena vrednost ohranja med funkcijskimi klici.:
Pri prvem klicu (predpostavimo, da funkcije ne kličemo v nobenem drugem modulu) se bo izpisala 0, pri drugem 1 (pri tretjem bi se 2 in tako naprej).
Ako pa gre za atribut razreda, si nje vrednost delijo vse instance tega razreda:
V tem primeru bo izpis:
4
4
5
5
yy_acclist je ime spremenljivke.
[288] jo deklarira kot tabelo z 288 elementi (torej tečejo indeksi od 0 do 287).
static ima dva pomena. Če gre za lokalno spremenljivko (definirano znotraj neke funkcije), se njena vrednost ohranja med funkcijskimi klici.:
int bee() { static int a = 0; std::cout << a++ << endl; } ... bee(); bee();
Pri prvem klicu (predpostavimo, da funkcije ne kličemo v nobenem drugem modulu) se bo izpisala 0, pri drugem 1 (pri tretjem bi se 2 in tako naprej).
Ako pa gre za atribut razreda, si nje vrednost delijo vse instance tega razreda:
class Ovcica { static int st_nog = 4; void izpisiSteviloNog() { std::cout << a << endl; } void nastaviSteviloNog(int n) { st_nog = n; } }; ... Ovcica ana, berta; ana.izpisiSteviloNog(); berta.izpisiSteviloNog(); ana.nastaviSteviloNog(5); // priletijo hudobni vesoljci in mojo credno genetsko modificirajo ;) ana.izpisiSteviloNog(); berta.izpisiSteviloNog();
V tem primeru bo izpis:
4
4
5
5
Otroška radovednost - gonilo napredka.
Zgodovina sprememb…
- spremenilo: OwcA ()
trs ::
Tabela podatkov je navaden array in se obnasa popolnoma isto:
int bala[10] je isto kot int bala[10] = { 1,2,3,4,5,6,7,8,9,10 };
Razlika je samo v tem, da v prvem primeru, bodo podatki nedefinirani(torej moras sam inicializirat array z ustreznimi podatki) v drugem primeru pa so vrednosti elementov definirane. static v tem primeru pomeni, da lahko uporabljas array samo znotraj istega C filea. static, kot je ze Owca omenil, ima vec pomenov(iz glave jih nastejem 3, ne samo dva ;) Simboli v Cju so po defaultu extern(torej dostopni tudi iz drugih C modulov). V tem primeru je static obratno kot extern ;) Upam da je bilo dovolj jasno ...
Aja, pa se yyconst ... tisto je verjetno v kakem header fileu definiran typedef ali manj verjetno #define ...
int bala[10] je isto kot int bala[10] = { 1,2,3,4,5,6,7,8,9,10 };
Razlika je samo v tem, da v prvem primeru, bodo podatki nedefinirani(torej moras sam inicializirat array z ustreznimi podatki) v drugem primeru pa so vrednosti elementov definirane. static v tem primeru pomeni, da lahko uporabljas array samo znotraj istega C filea. static, kot je ze Owca omenil, ima vec pomenov(iz glave jih nastejem 3, ne samo dva ;) Simboli v Cju so po defaultu extern(torej dostopni tudi iz drugih C modulov). V tem primeru je static obratno kot extern ;) Upam da je bilo dovolj jasno ...
Aja, pa se yyconst ... tisto je verjetno v kakem header fileu definiran typedef ali manj verjetno #define ...
mercury ::
OK. Jaz bi rad ustvaril eno zelo dolg konstanten string, iz katerega bi potem bral znak za znakom. Ne potrebujem pa arraya v ram-u, ker bi iz arraya samo bral in ne bi vanj pisal. Ker je string ker dolg bi ga rad napisal v več vrstah, kar pa mi še ni uspelo. Poskušal sem takole, a z errorji:
const char moj_string[] = {"blablablabla
blablablablabla
blablablablabla"};
To ustvari error constant in new line.
const char moj_string[] = {"blablablabla
blablablablabla
blablablablabla"};
To ustvari error constant in new line.
OwcA ::
Če govoriš o C++, čemu potem ne uporabljaš std::string?
Otroška radovednost - gonilo napredka.
mercury ::
Ker sem preneumen in prelen, da bi šel najprej v MSDN pogledat kaj sploh obstaja za string manipulation. Hvala!!!
BigWhale ::
Potem pa trpi.... ... no, si vsaj iskren... ;>
Zgodovina sprememb…
- spremenil: BigWhale ()
mercury ::
OK, sem poskusil s std::string in še vedno dobim isti error: newline in constant. Torej rad bi napisal konstanten string v več vrstah, zato da bo program bolj pregleden. Kako se to naredi ( seveda v c++ )???
Lep pozdrav
Lep pozdrav
CCfly ::
Mislim da je hotel vprašati kako spisati kodo v več vrstic, ne kako hraniti string v več vrsticah. Če se prav spomnim daš samo \ na konec vrstice. Ne da se mi pogledat, ker imam pred samo knjigo Poslovne funkcije
trs ::
char bla[] = "To naj bi bil "
"en zelo dolg "
"vec vrsticni "
"string";
int main(void) {
printf("%s\n", bla);
}
Rezultat tega programa je tale:
To naj bi bil en zelo dolg vec vrsticni string
No, ce hoces imet res dolge stringe, ti priporocam da jih preberes iz kake datoteke...
"en zelo dolg "
"vec vrsticni "
"string";
int main(void) {
printf("%s\n", bla);
}
Rezultat tega programa je tale:
To naj bi bil en zelo dolg vec vrsticni string
No, ce hoces imet res dolge stringe, ti priporocam da jih preberes iz kake datoteke...
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | kaj tele kilometri ne bodo držali ? (strani: 1 2 )Oddelek: Na cesti | 8595 (5606) | IL_DIAVOLO |
» | EU žuga Applu zaradi zavajajočega oglaševanjaOddelek: Novice / Ostale najave | 6444 (5014) | tomaz- |
» | Odprl sumljiv fajl - kaj zdaj?Oddelek: Informacijska varnost | 1466 (1169) | Malcolm_Y |
» | Nekaj analize teme "50let bla bla ..."Oddelek: Loža | 2344 (1582) | gzibret |
» | R 9550! Rabm hitre nasvete (strani: 1 2 )Oddelek: Kaj kupiti | 4064 (3387) | Jan987 |