Programiranje u C++-u - pitanja i odgovori izdvojena tema

poruka: 7.285
|
čitano: 1.712.819
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
NiGHT_RiDER92 kaže...
Zanima me (ovo je primjer s neta), čemu sad to točno služi i što se dobiva takvom uporabom pointera ako se može 

jednostavno ispisati cout <<polje[0] << endl; umjesto rada s pointerom ?


Kakva je točno sad tu korist od pointera, ne kužim baš.

To je vjerojatno neki primjer koji pokazuje da pointer 'p' pokazuje na prvi element polja i da njegovo dereferenciranje daje isti rezultat kao i p[0]

 

Zašto misliš da tu ima nužno neke koristi? Pa radi se o tri linije koda, i sam si skužio što se događa...

 

EDIT: domagoj me opet pretekao, to mu danas prelazi u naviku ^^

What Andy giveth, Bill taketh away.
Poruka je uređivana zadnji put uto 30.7.2013 23:10 (rustweaver).
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

polje[i] = *(p + i)

 

Znači, možeš koristiti notaciju za polja ili pokazivače.

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
12 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Moze li itko dati link na temu gdje je TracerCPP dao nekoliko zadataka izt programiranja pokusavao sam pronaci ali ne mogu naci

P.S mislim da je Tracer stavio te zadatke nisam siguran hvala.

 
0 0 hvala 0
17 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori
 
1 0 hvala 0
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

heh... u isto vrijeme {#}

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
Poruka je uređivana zadnji put sri 31.7.2013 15:23 (TracerCPP).
12 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Zahvaljujem :)

 
0 0 hvala 0
15 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Opet pitanje jedno (o pointerima :D ).

 

Ja stvarno tu neke stvari ne kuzim (pogledati sliku)

 

Imam između ostalog:

 

HDEVINFO hDev = SetupDiGetClassDevs(&GUID_DEVCLASS_BATTERY,0,0,DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);

SP_DEVICE_INTERFACE_DATA did = {0};

 

Prvi argument u funkciji SetupDiEnumDeviceInterfaces() je void * DeviceInfoSet i posto piše void * ja sam ocekivao da se unutra upisuje &hDev, a zadnji argument je _SP_DEVICE_INTERFACE_DATA * DeviceInterfaceData

(opet za zvjezdicom) i unutra ulazi &did. 

 

Ja sad fakat ne kužim, zašto u prvom argumentu ne prosljeđujemo adresu od HDEVINFO (znaci &hDev), a u zadnjem da !?

U oba argumenta je zvjezdica, to me tako zbunjuje...

Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Ta dva pointera nisu istog tipa. Prvi, void pointer, može primiti adresu bilo kojeg tipa, dok ovaj zadnji pointer je očito pointer na neku određenu strukturu.

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
Poruka je uređivana zadnji put sri 31.7.2013 22:15 (TracerCPP).
Moj PC  
0 0 hvala 0
12 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Iako ov ne spada u ovu temu već sam pitao na temi za engleski no nitko mi se nije javio pišem završni rad dobio sam materijale na englenskom pa neznam par riječi prevesti pa ako itko zna neku stranicu sa prijevodima stručnih riječi mada sumnjam da ima takvo što. Ovo su riječi pa ako netko zna:

 

-hantsets 
-capacitive loading 
-helix antenna 
-monopole antenna 
-feeding structure 
-capacitive feed 
-candybar
-multipath

-microstrip patch pattern

-feed and ground-connection loading

-multiple anntenas and isolation

 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
TracerCPP kaže...

Ta dva pointera nisu istog tipa. Prvi, void pointer, može primiti adresu bilo kojeg tipa, dok ovaj zadnji pointer je očito pointer na neku određenu strukturu.

Da, ali zašto u prvom ne upisujem &hDev nego samo hDev a u zadnjem &did (sa '&'), a u oba dva argumenta je '*' znak ?

Poruka je uređivana zadnji put sri 31.7.2013 22:24 (NiGHT_RiDER92).
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

void f(int *p1);

int main(){
    int *pointer, varijabla;
    .
    .
    f(&varijabla); // funkciji se predaje adresa varijable
    f(pointer);    // vrijednost pointera je nekakva adresu pa '&' nije potrebno pisati

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
TracerCPP kaže...

void f(int *p1);

int main(){
    int *pointer, varijabla;
    .
    .
    f(&varijabla); // funkciji se predaje adresa varijable
    f(pointer);    // vrijednost pointera je nekakva adresu pa '&' nije potrebno pisati

Znači ti hoćeš reći da je HDEVINFO u stvari sadržava neku adresu (tj. to je handle od device info-a) i u biti zato ispred ne treba ići '&' znak u onoj funkciji, a kod SP_DEVICE_INTERFACE_DATA did = {0};funkcija zahtijeva da joj predam adresu te strukture i zato ide znak '&' ?

 

p.s. to se sad odnosi na onaj moj gore primjer, ne na ovaj tu sad.

I da još napomenem, sav sam se pogubio u tome :D

Poruka je uređivana zadnji put sri 31.7.2013 23:04 (NiGHT_RiDER92).
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

To je tako kad se idu raditi novi windowsi a ni osnove se nisu naučile kako treba {#}

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
Moj PC  
1 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Nije da radim nove windowse, nego proučavam neke stvari vezane uz Win32API. 


Ali slažem se, možda bi trebao neke stvari malo više proučiti kao pokazivače npr.

14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Pokazivači su osnova za bilo kakvo ozbiljnije programiranje.

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Ma čitao sam teoretski dio iz tvoje knjige, ali nisam baš previše u praksi isprobavao do sad neki dan ...

 

14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Dvije su osnovne primjene pokazivača:

 

1. dinamička alokacija memorije (int *p = new int[100])

2. komunikacija među funkcijama

 

Tebi je u tvom slučaju trebalo ovo drugo. Primjerice, recimo da postoji varijabla 'n' u funkciji main. Ta varijabla je dostupna samo funkciji main jer je u njenom lokalnom području. Zapravo, jedini način da neka druga funkcija pristupi toj varijabli (njenoj adresi) jest da zna njenu adresu;

 

void f(int* p);

int main(){
    int n = 0;

    f(&n);    // predaje se adresa varijable
    cout << n << endl; // ispisuje 5 jer je funkcija f promijenila vrijednost na adresi od n

    return 0;
}
void f(int* p){
    *p = 5; // na adresi p (onoj adresi koja je predana funkciji f) postavi vrijednost 5
}

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
NiGHT_RiDER92 kaže...

Da, ali zašto u prvom ne upisujem &hDev nego samo hDev a u zadnjem &did (sa '&'), a u oba dva argumenta je '*' znak ?

HDEVINFO, da si barem malo proučavao način na koji se imenuju stvari u windows API-ju (systems hungarian), znao bi da je H - Handle, pa je to onda handle devinfo

E sada, da si dalje gledao, znao bi da je svaki handle zapravo void pointer

 

Ili da skratim:

 

setupapi.h:

typedef PVOID HDEVINFO;

 

Dakle to već jest pointer, sasvim je druga stvar što ga je intellisense pokazao kao "void * DeviceInfoSet" umjesto "HDEVINFO DeviceInfoSet". E ali da ti ga je pokazao kao "void ** DeviceInfoSet" ili kao "HDEVINFO * DeviceInfoSet" onda bi morao koristiti &hDev jer bi ti to bila naznaka da je riječ o pokazivaču na pokazivač.

 

http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751%28v=vs.85%29.aspx

 

Trebaš znati raspetljavati takve stvari. Nisam ja samo jednom po MSDN-u (ili još gore, po headerima) naganjavo makroe i typedefove kako bih vidio što se tu zapravo događa ^^

 

 

Što se SP_DEVICE_INTERFACE_DATA strukture tiče to je bar jednostavno, ti imaš varijablu deklariranu kao strukturu, argument traži pokazivač na tu strukturu.

 

Misterij riješen.

 

I ozbiljno, poradi na pokazivačima, bez toga nećeš daleko, kako ti je i tracer rekao. Gnjavi nas ovdje kad god ti nešto s pokazivačima nije jasno, prije ili poslije sve ćeš nejasnoće razjasniti...

What Andy giveth, Bill taketh away.
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Hvala na objašnjenju i tebi i traceru, ma isprobavam nešto s baterijom (čitanje voltaže, itd...), ova stvar koju si mi objasnio me već odavna mučila

ali nikako da pitam na forumu, jednostavno mi nije bilo jasno zašto je to tako jer u dosta literature je to dosta komplicirano objašnjeno, nisam baš nailazio

na stvari ovako jednostavno objašnjene baš pa sam veoma zahvalan na objašnjenima. 

 

Ovo što mi vi objasnite sam isprobavao u praksi da prokužim to malo bolje (ne samo ovo sad, nego i od neki dan).

15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Ma caka ti je u čitanju dokumentacije. MSDN ti je apsolutno neizostavan kada imaš posla sa windows programiranjem. Knjige opisuju neku temu, pokušavaju ti razjasniti neke koncepte, ali uglavnom nikada ne zalaze u dubinu kojom se bave manuali. Manual je tu da ti u detalje opisuje svaki pedalj API-ja, svaku bizarnu funkciju i tip podatka koji ćeš koristiti možda jednom u 100 godina :D

 

Jesi kad čuo onu: "RTFM"? Eh... :D

What Andy giveth, Bill taketh away.
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Da :D Ma citao sam ja na MSDN-u dokumentaciju (dobro, površno više manje) ali je fora u tome da imam osjecaj da tako nikad necu nauciti programirati ako stalno gledam primjere

i skoro doslovce da prepisujem to sa MSDN-a :D

15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
NiGHT_RiDER92 kaže...

Da :D Ma citao sam ja na MSDN-u dokumentaciju (dobro, površno više manje) ali je fora u tome da imam osjecaj da tako nikad necu nauciti programirati ako stalno gledam primjere

i skoro doslovce da prepisujem to sa MSDN-a :D

Nisam baš nužno mislio na primjere, niti na kopiranje primjera. Govorim o referenci za kojekakve tipove podataka i funkcije...

Jesi vidio linkove koje ja sa MSDN-a linkam?

 

A i primjeri su korisni, pokazuju u praksi kako se neka funkcija koristi. Demonstracija.

What Andy giveth, Bill taketh away.
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Da, vidio sam linkove, ali meni to slabo koristi uglavnom pa vise primjere gledam, a onda doslovce skoro da ih i kopiram

(tu i tamo nesto izmjenim i prilagodim si), ali to mi nije to onda ... :/

 

Sad ne znam dali je to "pravo programiranje" ako takve stvari radiš ...

Nije da ja imam previše iskustva sa C++, ja sam sad više u fazi učenja osnova više manje ...

Poruka je uređivana zadnji put čet 1.8.2013 1:30 (NiGHT_RiDER92).
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
NiGHT_RiDER92 kaže...

Da, vidio sam linkove, ali meni to slabo koristi uglavnom pa vise primjere gledam, a onda doslovce skoro da ih i kopiram

(tu i tamo nesto izmjenim i prilagodim si), ali to mi nije to onda ... :/

Ako ne razumiješ ono što si kopirao onda je problem.

 

Windows programiranje se sastoji od poprilične količine šablonskog i repetitivnog koda tako da tu i nije neko zlo raditi copy/paste. Ne možeš očekivati od sebe da bilo što možeš uzeti i pisati onako iz glave bez da se podsjetiš ili čak prvi puta vidiš kako se nešto radi. Za to ti služi MSDN, da ne moraš sve stalno držati u glavi. Stvari koje često koristiš već će ti se uvući pod kožu, one ostale neće i svaki puta ćeš ih se iznova morati prisjećati...

What Andy giveth, Bill taketh away.
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Ma dobro, pokušavam čim manje kopirati i čim više razumjeti dok nešto radim, jedino gdje stalno sam zapinjao do sada su bili pointeri više manje i sad mi je

poprilično jasno da moram to savladati kako treba i provježbati čim više primjera.

17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
NiGHT_RiDER92 kaže...

Da :D Ma citao sam ja na MSDN-u dokumentaciju (dobro, površno više manje) ali je fora u tome da imam osjecaj da tako nikad necu nauciti programirati ako stalno gledam primjere

i skoro doslovce da prepisujem to sa MSDN-a :D

programirati ne ucis iz dokumentacije, dokumentacija ti je vise manje kako neki dio radi, ne mozes ocekivati da ces bas znati sto trebas procitati u nekom normalnom razvojnom putu...

na isocpp.org imas pocetak bjarneove knjige...

http://isocpp.org/tour

13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Zoidberg kaže...

 

programirati ne ucis iz dokumentacije, dokumentacija ti je vise manje kako neki dio radi, ne mozes ocekivati da ces bas znati sto trebas procitati u nekom normalnom razvojnom putu...

na isocpp.org imas pocetak bjarneove knjige...

http://isocpp.org/tour

 Ta ce mu knjiga biti od veelike koristi... On uci programirati Windows aplikacije koristeci WinAPI, te zapinje na stvarima koji se ticu api-a, vidio si gore. Knjiga ce ga nauciti osnovno o pokazivacima, a on to vec zna. Njemu bi dobrodosla knjiga o WinAPI-u.

@night_rider, probaj doci do knjige Programming Windows, peto izdanje, Od Charles Petzold-a. Meni ju je poslao @rustweaver, ako ne uspijes naci, javi se.

17 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Osobno smatram da ces najbolje pokazivace nauciti i skuziti uz pomoc jednostruko i dvostruko povezanih listi. Teoriju i osnove sada sigurno kuzis, ali kad implementiras dvostruko povezanu listu i _skuzis_ sto si napisao i kako to radi, tada ces znanje o pokazivacima zaista utabati.

No, ponavljam, to je samo moje osobno misljenje.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
 
4 0 hvala 1
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Hvala vam dečki, budem to navečer sve proučavao (i pokušao pronaći knjigu), sad idem na neku kavicu :D

11 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Znači ovdje se koristi bubble sort??
E-mail:
Lozinka:
 
vrh stranice