Forum » Programiranje » [C] osnovno vprašanje
[C] osnovno vprašanje
slovencl ::
Probu sem dva programčka: primer1 - ta mi je jasn, primer2 - ta mi pa ni čist jasn, zakaj se prevjalnik nič ne pritoži, saj ima v drugi for znki dve spremenjlivke istega imena?
- zavaroval slike: Vesoljc ()
ql000 ::
nima veze! Ti v drugi zanki samo ponovno prirediš i-ju neko drugo vrednost.
P.S.
[C++] in ne [C]
P.S.
[C++] in ne [C]
Zgodovina sprememb…
- spremenil: ql000 ()
MaCoFaCo ::
Kolikor jaz razumem, notranji "i" nima veze z zunanjim. Oba sta na različnih naslovih. I think .
Edit: Res je. Če daš v obeh zankah izpis:
se vidi da sta naslova različna (malo sem izven C/C++ forme).
Edit: Res je. Če daš v obeh zankah izpis:
cout << &i << "\n";
se vidi da sta naslova različna (malo sem izven C/C++ forme).
Zgodovina sprememb…
- spremenilo: MaCoFaCo ()
slovencl ::
ql000, če bi bilo tako, potem bi imel i na koncu druge zanke vrednost čez 50 (saj ni nobeneg ukaza, ki bi i-ju nazaj priredil vrednost, ki jo je imel pred drugo for zanko), in se nebi še enkrat zvrtel v prvi zanki.
Zgodovina sprememb…
- spremenil: slovencl ()
NEO_ ::
MaCoFaCo ti je pravilno razlozil zakaj tako delovanje.
Ta i v drugi zanki nima nic skupnega z i-jem iz prve zanke (razen ime). Finta je v tem, da se ta i deklarira kot "lokalna" spremenljivka in se po koncu delovanja prve for zanke tudi "izbrise" iz pomnilnika.
Probaj uprabiti operato naslova (&i) in bos videl da imata spremenljivki razlicen naslov v pomnilniku.
lp
Ta i v drugi zanki nima nic skupnega z i-jem iz prve zanke (razen ime). Finta je v tem, da se ta i deklarira kot "lokalna" spremenljivka in se po koncu delovanja prve for zanke tudi "izbrise" iz pomnilnika.
Probaj uprabiti operato naslova (&i) in bos videl da imata spremenljivki razlicen naslov v pomnilniku.
lp
"nothing is impossible"
Vesoljc ::
isti scope(zor) imata
tole
ni isto kot
tole
{ int i; int i; }
ni isto kot
{ int i; { int i; } }
Abnormal behavior of abnormal brain makes me normal...
NEO_ ::
int i;
int i;
to pa je redeklaracija spremenljivke i, ki pa po ansii c++ ni dovoljena :)
int i;
to pa je redeklaracija spremenljivke i, ki pa po ansii c++ ni dovoljena :)
"nothing is impossible"
Matako ::
Gre za dva 'i' ja vsak v svojem obsegu (scope).
Da bi bila stvar še bolj zabavna, sta gnezdena. C++ vedno najprej upošteva najbolj lokalni scope. Zato je pa dobro dajati gnezdenim števcem vseeno različna imena, čeprav, kot kaže lepo tvoj primer, ni nujno. Ker, če boš zdaj spremenil samo tisti notranjo deklaracijo v for zanki, bo še vedno vse delalo, samo narobe.
Da bi bila stvar še bolj zabavna, sta gnezdena. C++ vedno najprej upošteva najbolj lokalni scope. Zato je pa dobro dajati gnezdenim števcem vseeno različna imena, čeprav, kot kaže lepo tvoj primer, ni nujno. Ker, če boš zdaj spremenil samo tisti notranjo deklaracijo v for zanki, bo še vedno vse delalo, samo narobe.
/\/\.K.
fogl ::
Še eno vprašanje: tistiral sem en primerček:
Zakaj gPodatkiC ni enako &gPodatkiC[0][0]. V prvem primeru se pritožuje, v drugem pa ne?
int gPodatkiC[2][3]={{1,2,3},{4,5,6}}; void podatki(int *podatek, int n) { for(int i=0; i<n; i++) { cout<<*podatek<<endl; podatek++; } } int main() { //podatki(gPodatkiC,4); podatki(&gPodatkiC[0][0],4); return 1; }
Zakaj gPodatkiC ni enako &gPodatkiC[0][0]. V prvem primeru se pritožuje, v drugem pa ne?
lp, klemen
OwcA ::
Ker je gPodatkiC kazalec na kazalec na int, podatki pa pričakuje kazalec na int.
Otroška radovednost - gonilo napredka.
OwcA ::
Ja,
&gPodatkiC[0][0]
je drugače ekvivalenten
gPodatkiC[0]
&gPodatkiC[0][0]
je drugače ekvivalenten
gPodatkiC[0]
Otroška radovednost - gonilo napredka.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | ugani film (strani: 1 2 3 4 … 78 79 80 81 )Oddelek: Sedem umetnosti | 188037 (65812) | Hansb |
» | CPU cooler -59 (strani: 1 2 )Oddelek: Hlajenje in modifikacije | 6319 (4261) | sharp |
» | Ugani kaj je na slikiOddelek: Loža | 2654 (2086) | tx-z |
» | Twinmos Speed Premium PC3500 problemiOddelek: Navijanje | 1461 (959) | ethelred |
» | Socket 462 (A) AMD Athlon 1800+Oddelek: Navijanje | 1877 (1381) | tiborrr |