» »

c++ error

c++ error

upirna ::

Zakaj mi ko zaženem to kodo vrže (imam windows xp) error(prevajalnik lepo prevede):

#include iostream
using namespace std;

int main(){

int i=1;
int *ki;
int **kki;

cout << **kki;


system ("pause");

return 1;

}

c3R4R ::

kva bi ti rad sploh delu s tem programom?
Jst sm si ga prenesu, ga mi prevalnik prevede, pol pa k ga zaženem pa napiše: File source not copmiled... čeprav prevalnik pri prevajanju ne javi napake?!?!;((

kva je to narobe?

Gandalfar ::

to ti ne prevede clean...

owca.cpp:1:10: #include expects "FILENAME" or
owca.cpp: In function `int main()':
owca.cpp:10: `cout' undeclared (first use this function)
owca.cpp:10: (Each undeclared identifier is reported only once for each
function it appears in.)
owca.cpp:13: `system' undeclared (first use this function)
owca.cpp:17:2: warning: no newline at end of file

c3R4R ::

@Gandalfar
glih tok vem k prej... torej nič. A lohk plis mal razložiš:8) :8)

rasta ::

int **kki;

cout << **kki;


Tale koda je malo čudna.
Dostopaš do vrednosti kazalca na kazalec brez da bi ga predhodno inicializiral?
Kaj ti pa sploh javi kot napako? Segmentation fault?

Imortales ::

Ja, inicializirat probaj. Nekaj takega:
int **kki = new int*;
Izpišeš pa si z:
cout << *kki;
To sporočilo se bo samo uničilo čez 5 sekund.

upirna ::

A takole mislš:

#include iostream
using namespace std;

int main(){


int i = 1;
int *ki;
int **kki = new int*;
cout << **kki;
system ("pause");

return 1;

}

Sam je rezultat isti.:\

p.s: men dev c ++ prevede brez napak!!!!

Zgodovina sprememb…

  • spremenil: upirna ()

Imortales ::

Njet. Za ispis uporabi cout << *kki; (samo 1 zvezdica).
To sporočilo se bo samo uničilo čez 5 sekund.

kopernik ::

Če boš uporabljal pointerje, potem si vedno stvar skiciraj in premisli.
Drugače ne boš nikoli razumel ene zvezdice, dveh zvezdic, znaka &, itd..
Sicer se lahko naučiš, kdaj je fajn uporabit kako stvar, kdaj pa ne. Ampak
tako ne boš nikoli razumel, kaj programiraš.

lp

rasta ::

Imaš zelo slabo razumevanje kazalcev.

int **kki = new int*;
cout << **kki;

Deklariraš spremenljivko (**int), ki hrani naslov, kjer se nahaja spremenljivka (*int), katera pa hrani naslov do lokacije v pomnilniku s podatkom tipa int. Pri deklaraciji spremenljivko tudi definiraš; rezerviraš kos pomnilnika velikosti *int, vsebino katerega ne poznaš (hranil pa naj bi naslov do kazalca na celoštevilsko vrednost). Je naključna.
V naslednji vrstici pa hočeš pogledati, kakšno vrednost ima celo število na katerega naj bi kazal kazalec, ki je shranjen na lokaciji *kki in sploh ne veš kam kaže (če sploh kam). In nato od takega kazalca (ki ga lahko ni) še zahtevaš vrednost na katero kaže. Pa saj to mora bit error.
Pa še lepo je, da kazalec, ki ga inicializiraš (new), tudi sprostiš (delete).
Sicer pa C++ kompajler pogolten marsikaj misleč, da veš kaj delaš.

Dobi si eno dobro knjigo od kazalcev pa svinčnik in papir v roke, če ne gre drugače.

upirna ::

Kaj priporočaš?

Vesoljc ::

Abnormal behavior of abnormal brain makes me normal...

d-mon ::

Zakaj iz majhnega drekca delate govno?

Ta program je neuporaben.
S tem programom ne dosezes nic.

Se posebno ne z zadnjo vrstico system("pause").
Ce klices to (zgodba iz druge debate in bom sedaj uposteval 'optimizacijo') bos pognal nov proces...se pravi ustvaril novo nit ali dve...Kar pozira ram in system resources.
Ce ze hoces da program na koncu caka (in le zakaj bi?) se napises getch() in s tem ne delas 'govna'.

Drugace pa...vidim, da noben ni opazil.

Zakaj je deklarirana spremenljivka i, ce potem nikoli ni v uporabi. No ja...isto velja za *ki. Kaj ti bo to?

Potem pa se najbolj smesno je to, da imas se **kki, ki ga pa uporabis se preden kam kaze. Kazalec KAZE...ti pa poves kam kaze.

In ce bi ta program nesmiselen ze hotel, da dela (domnevam da zelis izpisati i preko pointerjev) bi bil nekako taksen (ne me prijet za besedo, ker ne bom kompajliral, tako da so lahko se vedno napake).

int i;
int *ki;
int *kki;

ki = &i;
kki = ki; //al pa kki = &ki...nisem zihr...bo prevajalnik javil napako.

cout << **kki; //tudi to ne vem ce bo ravno vrednost i-ja dal...Je treba pogledat z debugerjem.

Ampak...se enkrat...wtf?

Ce bi se radi ucili c ali c++ vam dam jaz naloge, ne pa tak nesmisel delat, ki ga v svojem 'programerskem' zivljenju ne bos nikoli uporabil.

V mojih 7 letnih izkusnjah mislim, da nisem uporabil pointerja na pointer vec kot 2x (pa se to zato ker nisem bil se dosti dober v c++).

V Cju pride do tega da moras uporabit pointer na pointer kdaj pa kdaj, ampak ko enkrat znas c++ se take stvari resujejo na drugacne nacine.

Drugic bom prijaznejsi :)
[D-mon]

upirna ::

A si slučajno reku, da maš naloge??? Dej pošlji mi jih na uros.pirnat@guest.arnes.si . Ravno to pogrešam pri vseh knjigah, premalo nalog.

kopernik ::

Če se hočeš naučiti pointerje, potem naredi en simple VI editor.
Ampak v ANSI C-ju. V tem primeru boš potreboval tudi pointerje
na pointerje. In še manipulacije s stringi (znakovnimi polji)....

lp

d-mon ::

Evo ene lepe naloge, ki sem jih tudi poslal urosu pirnatu.
Teh nalog se spomnim, ker sem jaz zacel z njimi na faxu.

1. Vpisi string in preberi crke. Izpisi kolikokrat se katera crka pojavi.

2. Odstrani iz C ali C++ source kode vse komentarje.
- vse kar je med /* */ in kar je med // in koncem vrstice. Pazi na to ce imas "//" ali "/* */"....to je potem misljeno za izpis (printf...).

3. Spremeni vpisano arabsko stevilko v rimsko in obratno.

4. vpisi drevo v stilu (lahko drugace...samo vpisi ga...lahko ga preberes tudi iz datoteke).
1
1 3
4 7 6
2 6 3 7
(kao...za eno se veca).
In potem najdi najkrajso pot od zgoraj navzdol in jo se izrisi.
Najkrajsa pot je tiska kjer bo najmanjsi sestevek.
Za primer kako gres lahko po poti:
iz 1 3 gres lahko iz 1 na 4 7 in iz 3 na 7 in 6
1 3
/\ /\
4 7 6
(na isti princip, kot sem ti jaz sedaj narisal, na koncu tudi izpisi).

Ce vam je to prelahko, ali pa ce bi raje delali na objektnem programiranju povejte, ima tudi za to zacetniske nalogice.

Aja...lahko tudi naredite koledar. Vpises letnico in ti izpise koledar na ekran (po 2 meseca (bloka) v 'vrstico'. Izpis naj bo pa tak kot je klasicen koledar (2x klik na uro v winsih).
[D-mon]


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C] - Spreminjanje programa s pointerji

Oddelek: Programiranje
61078 (830) DaMachk
»

Kruskalov algoritem težave pri implementaciji

Oddelek: Programiranje
51519 (1293) zacetnik11
»

C++ spiralno pisanje v array

Oddelek: Programiranje
101369 (1120) ghost
»

C# je mozna referenca do int izven funkcije (direkt v classu torej)

Oddelek: Programiranje
81549 (1363) TopCat
»

[C#] unmanaged->managed code

Oddelek: Programiranje
112062 (1937) Zzzzzzz

Več podobnih tem