Kezdőoldal » Számítástechnika » Programozás » C probléma.1 dimenziós tömb...

Hengerelőhereverem kérdése:

C probléma.1 dimenziós tömb másolása függvénnyel?

Figyelt kérdés

Néhányadik próbálkozásra így néz ki, de nem működik, még csak most kezdtem tanulni a C nyelvet, meg úgy általában a programozást így nem meglepő, hogy elakadtam, előre is köszi a válaszokat.


#include <stdio.h>

#include <stdlib.h>


int masolas(int a[100]);

int main(void)

{


int t[100];

int t2[100];



for(int i=0;i<100;i++)

{

t[i]=i*i;

printf("%d\n", t[i]);

}


t2[]=masolas(t[]);


return 0;

}

int masolas(int a[100])

{

for(int i=0;i<100;i++)

{

a[i]=t[i];

}}



2014. máj. 24. 19:09
 1/10 anonim ***** válasza:
100%

Bár a feladat könnyűnek hangzik, a C miatt nem a leg-kezdőbb példa.


A tömböket a kezdőpointerük (elejének a helye a memóriában) alapján tudsz függvénynek átadni. A tömb méretét nem is kell ismerni.


void masolas(int[] mibe, int[] mibol, int hossz) {

__int i;

__for(i=0;i<hossz;++i) {

__ _mibe[i] = mibol[i];

__}

}


Használata: masolas(t2, t1, 100);

2014. máj. 24. 19:19
Hasznos számodra ez a válasz?
 2/10 iostream ***** válasza:
100%

Az a jó a másolásban, hogy annyira gyakori a feladat, hogy már megírták mások is, sőt, bekerült a szabványos könyvtárba is.

memcpy néven találod.

2014. máj. 24. 19:24
Hasznos számodra ez a válasz?
 3/10 anonim válasza:

t2[]=masolas(t[]); helyett:



#include <string.h>

...


memcpy(t2, t1, sizeof(t2));



csak akkor használd, ha a forrás és a cél típusa azonos.

2014. máj. 24. 19:47
Hasznos számodra ez a válasz?
 4/10 anonim ***** válasza:

"Bár a feladat könnyűnek hangzik, a C miatt nem a leg-kezdőbb példa."


:D

Mondj egy kezdőbb példát, ami nem merül ki a nyelv szintaktikájának a kipróbálásában.

2014. máj. 24. 21:39
Hasznos számodra ez a válasz?
 5/10 anonim ***** válasza:
Tetszőleges probléma pointerek nélkül. Nekem ez volt a legnehezebb a C szintaxisban, kétlem hogy ezzel kellene kezdeni a programozást.
2014. máj. 24. 21:43
Hasznos számodra ez a válasz?
 6/10 anonim ***** válasza:

Miről beszélsz, hol látsz te itt pointert?:D

(tudom, tudom, de csillagozni akkor se kell)


Egyébként látszik megkörnyékezett a java téged is, lásd a fenti paraméterlistát, amit írtál ;)

2014. máj. 25. 10:53
Hasznos számodra ez a válasz?
 7/10 anonim ***** válasza:
Ha a pointerekkel gondba voltál, akkor képzelem mennyire könnyű lehet az életed programozóként.
2014. máj. 25. 13:34
Hasznos számodra ez a válasz?
 8/10 anonim ***** válasza:

Hát hogy ő "gondban volt" velük, az relatív.

Nekem például szintén "gondom volt" velük kb. egy hétig, mert nem értettem, mire valók, és miért kell egy feladatban használni, ha egyszer máshogy is megy.

Aztán mostmár szégyellném magam, ha nem tudnám, mi az (pedig nagyrészt javázok, meg phpzok, de akkor is)

2014. máj. 25. 16:12
Hasznos számodra ez a válasz?
 9/10 A kérdező kommentje:

Köszi az eddigi válaszokat, utolsóhoz szólva, valaki kitudná fejteni mire jó a pointer? :D

Mert én sem igazán értem, egyenlőre az a gondolatom volt, hogy nem kell egy új változót létrehozni hanem a már meglévőt használom így kevesebb helyet foglal, de nem vagyok biztos benne.

2014. máj. 25. 16:35
 10/10 anonim ***** válasza:

A pointer egy olyan változó, amely egy memóriacímet tartalmaz. (Vagyis egy memóriaterületre mutat).


Minden változó egyébként egy adott memóriaterületre mutat, ezért lehet először megtévesztő a dolog. Viszont, C-ben a változók lényegében a stack-en lévő egy adott területet jelképeznek, vagyis a stack-en végzett műveleteket teszik szemléletesebbé.


A pointerek is változók, de például egy int típusú változóval szemben az int pointer típusú változó nem egy int értéket tartalmaz, hanem egy int értéket tartalmazó memóriaterület azonosítóját. Ez akár a heap-en is lehet. Azt is megteheted, hogy megváltoztatod, hogy egy adott pointer változó hova mutasson. Tehát az érték, amit a pointer tárol, az hivatkozás egy másik memóriaterületre. (Ami amúgy szintén lehet pointer)

2014. máj. 25. 17:25
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!