Hirdetés
Új hozzászólás Aktív témák
-
válasz
aviator
#5584
üzenetére
"Azért lett pointer a tömb típusa mert később a koordináták címeire lesz szükség."
Ez a hiba. Ha szükség van a koordináták címeire, akkor veszed a címüket a & operátorral

Azzal, hogy az a tömb koordinata* típusú, azt mondtad, hogy ez egy pointert tartalmaz egy koordinata structra - és ez ezt is jelenti. Amikor létrehozod a haromszoget, akkor az létrejön, lesz benne három pointer, amik nem mutatnak sehova (pontosabba valami tök véletlenszerű helyre mutatnak), persze, hogy úgy elszáll a program.
Kénytelen leszel feltölteni ezeket a pointereket kézzel, pl. úgy, hogy foglalsz három koordinata structot, aztán azoknak a pointereit berakod (és amikor nem kellenek, akkor majd nyomsz rájuk egy free-t is). Ez remek dolog, ha valamiért te szeretnéd foglalni ezeket vagy más helyen lefoglalt structok pointerét akarnád felhasználni, viszont úgy tűnik, hogy egyáltalán nem ezt akarod, hanem azt, hogy a fordító hozzon létre neked három koordinata structot, meg aztán majd szabadítsa is fel a megfelelő időben.Szóval ez kell neked:
typedef struct haromszog
{
koordinata csucsok[3];
}haromszog;
haromszog triangle;
scanf("%d %d %d", &(triangle->csucsok[0].x),&(triangle->csucsok[0].y),&(triangle->csucsok[0].z)); -
Jester01
veterán
válasz
aviator
#5570
üzenetére
Ez meg a híres tömb-pointer ekvivalencia. C-ben a tömb automatikusan konvertálódik az első elemére mutató pointerré:
Except when it is the operand of the sizeof operator or the unary & operator, or is a string literal used to initialize an array, an expression that has type "array of type" is converted to an expression with type "pointer to type" that points to the initial element of the array object and is not an lvalue.
-
aviator
tag
válasz
aviator
#5569
üzenetére
char szoveg[101];
char*szpt;
scanf("%s",szoveg);
szpt=(char*)malloc(sizeof(char)*((strlen(szoveg))+1));
strcpy(szpt,szoveg);
printf("%s",szpt);
free(szpt);Újabb hasonló probléma. A strcpy itt elméletileg egy char típusú tömböt másol egy char* típusú tömbbe, ami nem lenne lehetséges. Sejtem, hogy az előző "indexelés megeszi a pointert" dolognak lesz itt is jelentősége, gondolom itt az indexelés a string-ben áll annak ellenére, hogy nem látszik az indexelő [] operátor. Kiíratáskor pedig látszólag string-ként íródik ki a pointer típus.
Amit nem értek az az, hogy a strcpy két paramétere hogy lesz azonos típusú, melyiknek változik meg a típusa (ha egyáltalán megváltozik) és miért, illetve, hogy a kiíratáskor hogy lesz a pointerből kiíratható string. -
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Azonnali készpénzes Sony Playstation 5 lemezes és digitális felvásárlás személyesen/csomagküldéssel
- 4 x 100.000 ft RÉSZLETRE .OPCIONÁLIS. G.SKILL Trident Z5 Neo RGB 96GB (2x48GB) DDR5 6000MHz
- Wacom Bamboo One CTF-430 rajztábla
- Honor Pad X8 / 4/64GB / Wi-Fi / 12 Hó Garancia
- HIBÁTLAN iPhone 14 Pro 256GB Gold -1 ÉV GARANCIA - Kártyafüggetlen, MS3519
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest





