Kezdőoldal » Számítástechnika » Programozás » Valaki meg tudná nekem magyará...

Valaki meg tudná nekem magyarázni ennek az egyszerű C++ példának a lényegét?

Figyelt kérdés

#include <iostream>

using namespace std;

void tombkiir (int arg[], int length) {

for (int n=0; n<length; n++)

cout << arg[n] << " ";

cout << "\n";

}

int main ()

{

int tomb1[] = {5, 10, 15};

int tomb2[] = {2, 4, 6, 8, 10};

tombkiir (tomb1,3);

tombkiir (tomb2,5);

return 0;

}


Ezt nem értem:

"void tombkiir (int arg[], int length)" Oké, egy függvényt kezd, de mi az a void, hogy jött ide arg[], és miért/hogy lehet egyáltalán a zárójelen belülre inteket írni? (Bocsánat a béna kérdésekért, ez az első találkozásom a C++ függvényekkel.)

Azt sejtem, hogy ebben "tombkiir (tomb1,3);" adta meg az arg tömb elemeit és a hosszát, jól gondolom?



2013. aug. 7. 17:05
 1/4 anonim ***** válasza:

Az általad kiemelt sor a függvény szignatúrája. Itt írod le, hogy milyen típusú paraméterei vannak a tömbnek (egy int tömb típusú "arg" nevű, és egy int típusú "length" nevű), illetve hogy milyen típusú értékkel tér vissza a függvény (itt most void, ami azt jelenti, hogy nincs visszatérési értéke).


Tehát azért írkálhatsz ide "inteket", mert ez itt nem függvényhívás, hanem a függvény definíciója.


A tombkiir(tomb1, 3); pedig a függvény egyik meghívása, ahol megkapja a paramétereit.


A tomb1 lesz a függvényen belül az arg, a 3 pedig a length.

2013. aug. 7. 17:26
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:

Na sikerült elírnom. :D

Szóóóval az első sorom javítva:

"Az általad kiemelt sor a függvény szignatúrája. Itt írod le, hogy milyen típusú paraméterei vannak a _függvénynek_ ..."

2013. aug. 7. 17:41
Hasznos számodra ez a válasz?
 3/4 anonim ***** válasza:
Képzeld el ezt: tombkiir(int arg[], int length) úgy mint egy sablont. Amikor meghívod a tomkiir nevú függvényt, akkor neked muszáj úgy meghívnod, hogy az igazodjon a sablonhoz, tehát muszáj átadni neki egy tömböt ami integerekből áll, illetve egy integer számot. Ráadásul a paramétereket pozícióhelyesen kell átadnod, tehát az első a int tömb és a második az int szám.
2013. aug. 8. 10:55
Hasznos számodra ez a válasz?
 4/4 anonim ***** válasza:

A függvény neve előtt írjuk le, hogy milyen típust fog visszaadni. Ha nem kell semmit visszaadnia, akkor írunk void-ot. Jelen esetben ez egy kiíró függvény, semmilyen visszatérő értékre nincs szükségünk.

(Vigyázz, ne keverd össze a void* -gal!)


Az "int arg[]" a paraméterei közt azt jelenti, hogy egy int-ekből álló tömböt fog átvenni. Viszont a C-ben a tömböt egy mutatóval adjuk meg, ami az első elemére mutat. Ez azt jelenti, hogy ez:

int arg[]

ugyanaz, mint ez:

int * arg

vagyis egy int-re mutató pointer. Egy mutatót fog átvenni paraméterként, ami a tömb első elemére mutat. A függvény törzsében pedig az "agr[n]" azt jelenti, hogy az arg által mutatott helyhez képest hanyadik elemét akarjuk kiírni. Tehát az "arg[]" csak egy jelölésmód egy tömbhöz, ide a zárójelbe még nem is írhatunk értéket.


A szögletes zárójel valójában így látszik a fordító számára:

int arg[] ==> int * arg

arg[n] ==> *(arg + n * sizeof(int))

2013. aug. 8. 11:04
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!