Kezdőoldal » Számítástechnika » Programozás » Miért nem lehet átadni a tömb...

Miért nem lehet átadni a tömb értékét?

Figyelt kérdés

Az array tömböt szeretném különböző értékekkel feltölteni de valamiért mindegyiknek ugyanaz lesz az értéke amit utoljára beállítok.

Tehát a nulladik elemnek line1-nek kellene lenni az első elemnek pedig line2 de valamiért mind a kettőnek line2 érték jut.

Miért lehet ez?

[link]



2018. febr. 24. 04:37
 1/3 anonim ***** válasza:
0%
:o)
2018. febr. 24. 05:37
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:

A 4-5 sorban a tömbbe olyan adatokat töltesz, amik a 6-os sorban megszűnnek létezni, a függvény lokális adatai, a kiíratáskor már érvénytelenek.


Olvass utána a változók láthatóságának, érvényességének, és esetleg a verem (stack) működésének függvényhíváskor.

2018. febr. 24. 08:42
Hasznos számodra ez a válasz?
 3/3 anonim ***** válasza:

array[0] = line1;


Ezzel semmi mást nem csinálsz, mint a line1 pointerét átadod az array[0]-nak. A probléma ezzel az, hogy a line1 egy lokális változó, ami a függvény lefutása után felszabadul, és az általa mutatott memóriaterület felülírhatóvá válik. Amit te akarsz, az érték szerint átmásolni a szöveget az array[0]-ba. Ezt vagy úgy teszed, hogy eleve egy string literált adsz át neki:

array[0] = "line1";


Vagy a strcpy függvény használatával átmásolod a line1-ről az array[0]-ra. Ezesetben viszont figyelj oda, hogy az array[0]-n először kellő mennyiségű memóriát kell lefoglalnod, mielőtt rámásolhatsz, ezt a malloc() függvénnyel meg tudod tenni:


array[0] = malloc(sizeof(line1)) //line1 hosszának megfelelő méretű memóriaterületet foglalsz le

strcpy(array[0], line1) //átmásolod az értéket array[0]-ra.


Így már működni is fog.

2018. febr. 24. 12:54
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!