Obsah fóra
PravidláRegistrovaťPrihlásenie




Táto téma je zamknutá, nemôžete posielať nové príspevky alebo odpovedať na staršie. [ Príspevkov: 14 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
C++ ukazovatel a odkaz

Registrovaný: 07.04.07
Prihlásený: 10.08.10
Príspevky: 171
Témy: 42
Bydlisko: Bratislava
Príspevok NapísalOffline : 10.08.2010 12:28

Nazdar, potreboval by som trochu objasniť funkciu a aký je rozdiel medzi ukazovateľom a odkazom v C++. Akurát sa venujem štúdium a tato kapitola mi robí trochu zmätok v hlave. Tak by som bol vďačný za stručne vysvetlenie a objasnenie. Za pomoc Ďakujem.







_________________
Ten, kto sa pýta, je hlupákom päť minút; ten kto sa nepýta, zostáva hlupákom navždy.
Offline

Užívateľ
Užívateľ
C++ ukazovatel a odkaz

Registrovaný: 16.08.09
Prihlásený: 07.03.14
Príspevky: 186
Témy: 16
Bydlisko: Levice
Príspevok NapísalOffline : 10.08.2010 12:39

Pod odkazom máš na mysli referenciu asi.

Kód:
int& i = a;


Premenná i je referenciou na a. Akokoľvek narábaš s i, mení sa aj a. Premenná a musí mať l-hodnotu, to jest hodnota, ktorá je "istá", nejaký trvalý objekt.

Kód:
int b& = i;


Prakticky neexistuje referencia na referenciu, lebo b je referencia na a.

Pri funkciách máš 3 typy parametrov. Pokiaľ viem.
Pr.

Kód:
int fcia(int premenna) {...} // prekopíruje sa hodnota premennej typu int do premennej premenná.

int fcia(int& premenna) {...} // vytvori sa referencia na argument, ktorý je predaný odkazom. Mení to hodnotu premennej, na ktorú je to referencia.

int fcia(const int& premenna) {...} // len na čítanie...


A čo také ti píšu v knihe, či z kadiaľ sa to učíš, čomu konkrétne nerozumieš?







_________________
"Najlepším spôsobom, ako sa na budúcnosť pripraviť, je vymyslieť si ju." - John Sculley
Offline

Užívateľ
Užívateľ
C++ ukazovatel a odkaz

Registrovaný: 16.08.09
Prihlásený: 07.03.14
Príspevky: 186
Témy: 16
Bydlisko: Levice
Príspevok NapísalOffline : 10.08.2010 16:30

Pointer vlastne reprezentuje adresu, nejakého objektu, napr. premennej.

Tu je to vidno, že po vypísaní pointera, vypíše adresu premennej a da sa to skontrolovať, keď adresu vypíšem pomocou adresového operátora.
Kód:
#include <iostream>

int main () {
   int i = 0;
   int *p = &i;
   std::cout << p << std::endl;
   std::cout << &i << std::endl;
   return 0;
}







_________________
"Najlepším spôsobom, ako sa na budúcnosť pripraviť, je vymyslieť si ju." - John Sculley
Offline

Užívateľ
Užívateľ
C++ ukazovatel a odkaz

Registrovaný: 07.04.07
Prihlásený: 10.08.10
Príspevky: 171
Témy: 42
Bydlisko: Bratislava
Príspevok Napísal autor témyOffline : 11.08.2010 16:59

Zobeme si ze mam nejaku funkciu napr. zmen_cisla

V hlavnej funkcii main si deklarujem a inicializuje dve premenne A a B ktorým priradim nejaku hodnotu napr 3 a 5. (su lokalne samozrejme)

A teraz chcem aby sa premenne A a B po zavolani funkcie zmena_cisla navysili napr. o 2 tak musim predat parametre funkcii ako odkaz nie ?

To znamena ze sa nepreda funkcii samotna hodnota ale adresa kde sa tieto dve premenna nachadzaju, vo funkcii sa zmenia hodnoty na tychto adresach ale samotne parametre (adresy a a b) predane funkcii sa nemenia. To v konecnom dosledku znamena ze dojde k zmene tychto cisel.
A to v globalnom ponati. Takze ked vypiseme premennu A a B v main bude ich hodnota zmenena.

A pritom niesme viazany oborom platnosti.

otazka : keby ze nepouzijem odkaz, cisla vo funkcii by sa zmenili ale zmena by sa neprejavila vo funkcii main, a to z toho dovodu ze zmena_cila(a,b) nepracuje primo s premennymi z funkcie main ale vytvara si ich kopie ktore meni, tie vsa po skonceni funkcie su mimo obor platnosti a to znamena ze spat vo funkcii main sa vypisu povodne hodnoty 3 a 5 a nie nove hodnoty navysene o 2.
Moja otaznka znie : je toto tvrdenie pravdive ? (chcem len vediet ci spravne chapem fungobvanie)

Kód:
int main()
{
int a = 3;
int b = 5;
zmen_cisla(int &oa, int &ob);      // sa navysi o 2 a aj b
cout << a;     //   5
cout << b;     //    7
}


kod je iba ilustracny...

Toto je moja predstava o fungovani, otazka znie ci je tato predstava spravna :) preto chcem aby ste ma opravili ak som povedal nejaku blbinu.







_________________
Ten, kto sa pýta, je hlupákom päť minút; ten kto sa nepýta, zostáva hlupákom navždy.
Online

Skúsený užívateľ
Skúsený užívateľ
C++ ukazovatel a odkaz

Registrovaný: 11.01.09
Prihlásený: 25.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOnline : 11.08.2010 17:14

tommy70777 píše:
A teraz chcem aby sa premenne A a B po zavolani funkcie zmena_cisla navysili napr. o 2 tak musim predat parametre funkcii ako odkaz nie ?

Ako odkaz alebo ako smerník - rozdiel je iba v používaní. Pri odkaze používaš pohodlne iba meno premennej, kdežto pri smerníku musíš použiť operátor referencie, teda hviezdičku *.

tommy70777 píše:
je toto tvrdenie pravdive ?

Presne, ako si napísal, chápeš tomu správne.

V tvojom kóde si umiestnil prototyp funkcie zmen_cisla do tela main-u, ale to si sa zrejme pomýlil. Ak chceš volať túto funkciu, tak takto:
Kód:
zmen_cisla(a, b);


Offline

Užívateľ
Užívateľ
C++ ukazovatel a odkaz

Registrovaný: 16.08.09
Prihlásený: 07.03.14
Príspevky: 186
Témy: 16
Bydlisko: Levice
Príspevok NapísalOffline : 11.08.2010 19:06

tommy70777 píše:
Toto je moja predstava o fungovani, otazka znie ci je tato predstava spravna :) preto chcem aby ste ma opravili ak som povedal nejaku blbinu.


Vyskúšaj, uvidíš, prečítaj si text viackrát, uvidíš, použi google uvidíš... :)







_________________
"Najlepším spôsobom, ako sa na budúcnosť pripraviť, je vymyslieť si ju." - John Sculley
Offline

Užívateľ
Užívateľ
C++ ukazovatel a odkaz

Registrovaný: 16.02.08
Prihlásený: 08.12.10
Príspevky: 235
Témy: 13
Príspevok NapísalOffline : 13.08.2010 21:05

pizet píše:
Pri funkciách máš 3 typy parametrov. Pokiaľ viem.
Pr.

Kód:
int fcia(int premenna) {...} // prekopíruje sa hodnota premennej typu int do premennej premenná.

int fcia(int& premenna) {...} // vytvori sa referencia na argument, ktorý je predaný odkazom. Mení to hodnotu premennej, na ktorú je to referencia.

int fcia(const int& premenna) {...} // len na čítanie...



vazne?







_________________
Učet je neaktívny.
Offline

Užívateľ
Užívateľ
C++ ukazovatel a odkaz

Registrovaný: 16.02.08
Prihlásený: 08.12.10
Príspevky: 235
Témy: 13
Príspevok NapísalOffline : 13.08.2010 22:32

Fico píše:
Ako odkaz alebo ako smerník - rozdiel je iba v používaní. Pri odkaze používaš pohodlne iba meno premennej, kdežto pri smerníku musíš použiť operátor referencie, teda hviezdičku *.


Je smutne, ze skuseny uzivatel tvrdi veci, ktore nie su pravda. Nechcem tu teraz rozoberat aky je rozdiel medzi pointerom a refenciou, pre zaciatocnika to asi nebude trivialne na pochopenie... Ale ved uz len z filozofie C++ je to blbost, kde nie sme v matejskej skolke a ked si mozeme nieco spravit sami, tak to nebude mat priamu podporu v jazyku...

:(







_________________
Učet je neaktívny.
Offline

Užívateľ
Užívateľ
C++ ukazovatel a odkaz

Registrovaný: 08.03.09
Prihlásený: 06.10.20
Príspevky: 1116
Témy: 88
Bydlisko: 00100100
Príspevok NapísalOffline : 14.08.2010 10:04

preco len kritizujes?! napis ked vies aby aj ostatny vedeli







_________________
Programming is The Best
Hackers Are Not Crackers!!! Hackers build things, crackers break them!
;-)
Online

Skúsený užívateľ
Skúsený užívateľ
C++ ukazovatel a odkaz

Registrovaný: 11.01.09
Prihlásený: 25.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOnline : 15.08.2010 15:22

ado21 píše:
veci, ktore nie su pravda

Nevravím pravdu? Tak ma oprav. Inak ťa prosím, odpusť si tvoje narážky.

1.) tommy70777 sa danú problematiku učí, tzn, povedal som mu úplny základ, ktorý potrebuje na začiatok. Zložitejšie a hlbšie vysvetlenia by mu boli k ničomu.
2.) ak niečo neviem, tak do témy nepíšem
3.) ak nemáš čo poradiť, nespamuj (predpokladám, že nikoho nezaujíma "myslím si" a podobne. Takže keď spomínaš, že nevravím pravdu, nech sa páči, oprav ma a zbytočnosti tu nepíš. Veď, ako si povedal, "riadiš sa rozumom", však?)


Offline

Užívateľ
Užívateľ
C++ ukazovatel a odkaz

Registrovaný: 16.02.08
Prihlásený: 08.12.10
Príspevky: 235
Témy: 13
Príspevok NapísalOffline : 15.08.2010 20:52

Fico píše:
Nevravím pravdu? Tak ma oprav. Inak ťa prosím, odpusť si tvoje narážky.

1.) tommy70777 sa danú problematiku učí, tzn, povedal som mu úplny základ, ktorý potrebuje na začiatok. Zložitejšie a hlbšie vysvetlenia by mu boli k ničomu.
2.) ak niečo neviem, tak do témy nepíšem
3.) ak nemáš čo poradiť, nespamuj (predpokladám, že nikoho nezaujíma "myslím si" a podobne. Takže keď spomínaš, že nevravím pravdu, nech sa páči, oprav ma a zbytočnosti tu nepíš. Veď, ako si povedal, "riadiš sa rozumom", však?)


pointer je adresa v pamati, referencia je iba druhe meno pre ten objekt

- na refencii nemozes pouzit pointrovu aritmetiku.
- refercia nemoze odkazovat na void, pointer ano
- referncia na funkciu neexistuje, pointer na funkciu ano
- refenciu nemozes derefencovat
- refencia musi mat pri deklaracii rovno definovana
- neda sa zmenit objekt, na ktory refencia ukazuje. Stale ukaze iba na na jeden a ten isty objekt, ktory bol priradeny pri jej definicii

Nech sa na to divam akokolvek, vobec mi to nepride ako to iste a ani to nebol tvoj prvy preslap...







_________________
Učet je neaktívny.
Online

Skúsený užívateľ
Skúsený užívateľ
C++ ukazovatel a odkaz

Registrovaný: 11.01.09
Prihlásený: 25.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOnline : 15.08.2010 22:05

Teraz si všimni môj príspevok vyššie, nič z toho som nepoprel. Napísal som, že ak treba zmeniť premennú vo vnútri funkcie, tak sa tejto funkcii môže predať ako smerník alebo ako referencia. Ďalej som napísal, že pri referencii (odkaze) na premennú sa s ňou vo funkcii pracuje ako s obyčajnou premennou na rozdiel od smerníka, ktorý nesie adresu.
Myslím, že som bol "obvinený" neprávom a keďže som si všimol v iných sekciách fóra, že si hádavý typ človeka, ajj napriek JASNE vysvetlenému opaku, tak do tejto témy ďalej odmietam prispievať, keďže problém bol aj tak už vyriešený.


Offline

Užívateľ
Užívateľ
C++ ukazovatel a odkaz

Registrovaný: 16.02.08
Prihlásený: 08.12.10
Príspevky: 235
Témy: 13
Príspevok NapísalOffline : 15.08.2010 22:59

Fico píše:
Ďalej som napísal, že pri referencii (odkaze) na premennú sa s ňou vo funkcii pracuje ako s obyčajnou premennou na rozdiel od smerníka, ktorý nesie adresu. [/qoute]

Neviem, naozaj nevidim, kde si take nieco napisal...

Fico píše:
Myslím, že som bol "obvinený" neprávom a keďže som si všimol v iných sekciách fóra, že si hádavý typ človeka, ajj napriek JASNE vysvetlenému opaku, tak do tejto témy ďalej odmietam prispievať, keďže problém bol aj tak už vyriešený.[/qoute]
Studujem exaktne vedy, kde ma vyznam kazdy kvantifikator a kazde slovo. Aj zvratne zameno. V programovani duplom zalezi na kazdom znaku...

Fico píše:
Ako odkaz alebo ako smerník - rozdiel je iba v používaní.


Si to napisal a nie je to pravda. Nie som hadavy typ cloveka ale poznanie a pravdivost je u mna velmi vysoko... Co ak je problem ten, ze pouzivate slova iba tak, aby ste sa zamysleli, co nimi skutocne hovorite?

A naozaj si myslim, ze v takych veciach by nemal clovek veci, ktore skusenemu programatori ihned implikuju nepravdu...

A som alergicky ak nejaky clovek v role profika ide v exaktnych veciach vyhlasovat nepravdy. Aj vsetci blizko mna...


Offline

Čestný člen
Čestný člen
C++ ukazovatel a odkaz

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 16.08.2010 11:58

Staci. Tema sa zamyka, o odomknutie moze pripadne poziadat autor temy.


Táto téma je zamknutá, nemôžete posielať nové príspevky alebo odpovedať na staršie. [ Príspevkov: 14 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Ukazovatel a operator delete c++

v Assembler, C, C++, Pascal, Java

5

490

14.05.2016 20:50

BX Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ukazovatel clenskej statickej funckie a jej vyvolanie C++

v Assembler, C, C++, Pascal, Java

3

413

10.06.2017 18:16

BX Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. [C++] hypertextovy odkaz

v Assembler, C, C++, Pascal, Java

1

375

18.06.2010 8:20

coldak Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pri kliknuti na odkaz sa otvori tento odkaz v novom okne

v HTML, XHTML, XML, CSS

13

1993

08.12.2007 21:08

twistik Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Odkaz na usb na C:\Windows\System32

[ Choď na stránku:Choď na stránku: 1, 2 ]

v Bezpečnosť a firewally

58

1918

27.03.2013 19:40

personal compuper Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Nefunguje ukazovateľ jasu

v Ostatné

2

380

15.08.2012 21:21

MiSCHo_20 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ukazovateľ batérie (Ubuntu)

v Ostatné programy

3

598

28.11.2010 10:41

W.u.n.j.o Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. MiniAPP- Ukazovateľ ping

v Ostatné programy

6

399

08.01.2016 10:14

Lessik Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ukazovatel teploty :P

v Benchmarky a diagnostické programy

17

2547

02.09.2007 21:09

Jaro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. upload skript - ukazovatel priebehu

v PHP, ASP

1

560

26.01.2009 17:44

emer Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. softver - ukazovateľ skore na futbal

v Grafické programy

1

372

12.12.2014 9:16

don jebot Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Automaticky presúvať ukazovateľ myši na predvolené tlačidlo

v Operačné systémy Microsoft

0

399

06.06.2012 17:45

fagi853 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Mám sa učiť C ++/objective C/ C#?

v Assembler, C, C++, Pascal, Java

5

732

08.07.2014 20:40

XOLOO Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. odkaz

v PHP, ASP

6

812

23.05.2007 19:35

qacer Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. odkaz

v Ostatné

3

1008

10.02.2007 15:43

zero0x Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Odkaz

v Redakčné systémy

4

827

15.04.2007 20:15

kajbo Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra