Aktív témák
-
amargo
addikt
bocs elég jól leírta (bár csak átfutottam rajta)
ha *-gal jelölsz meg vmi az csak mutató lesz egy pointer.. tényleges adatot nem tárol.. csak a címre mutatot adat kezdő címét.
mutatóval nem térhetsz vissza(bár lehet, hogy kilehet ügyeskedni.. csak értelme nincs).. mivel nem tartalmaz tényleges adatot.
itt egy pl:
void main(void)
{
int getword(char[]);
char szov[100];
getword(szov);
printf(''%s'',szov);
}
int getword(char tomb[])
{
int db;char ch;
for(db=0;(ch=getche())!=' ' && ch!=' ' && ch!=' ';db++)
tomb[db]=ch;
tomb[db]=' -
bocs
csendes tag
válasz
-=V3rthil=-
#1
üzenetére
1. char*-al nem tárolsz stringet.
csak karakterek egymásutánjaként tárolhatsz stringet, a char* csak megmondja az első betű címét a memóriában.
2. ha ez egy fgv visszatérési értéke, akkor azt adod vissza, hogy hol található egy karaktersorozat a memóriában. ez egy szám, pl 1324598375 ami az ennyiedik bájtot mutatja meg a memóriában (nagyon leegyszerűsítve)
3. nagyon fontos tehát, hogy nem magukkal a karaktersorozatokkal dobálózol függvénybe be és abból ki, hanem csak az első kar. címével. A karaktereknek való bájtsorozat lefoglalásával, feltöltésével még ezen felül meg kell birkózni.
A példádban az ''akármi'' egy string konstans, vagyis a fordító neked bepakolja egy konstansok számára fenntartott adatterületre, és ha azt --- char *adat --- változóba töltöd be, akkor csak egy db pointert, az első betű, az 'a' címét töltötted be az adat nevű változóba. Ez a pointer érték, ami ugye egy egész szám, simán visszaadható függvényből, amennyiben a függvényből való kilépéskor még mindig ugyanott létezik az a string, amire mutat.
Mivel a konstans az mindig ott marad, ahol a program indulásakor került, senki sem bántja, a példád működik.
Katasztrofális eredmény lesz viszont, ha olyan szövegfüzér címét adod vissza, ami aztán a függvényből való kilépéskor megsemmisül:
char* fgv(char* valami)
{
char kartomb[5] = ''1234'';
char *adat = kartomb;
...
return adat;
}
/egyébként return-nek nem kell zárójel/ -
-=V3rthil=-
őstag
Hi!
Kezdő programozó vagyok, és a segítségeteket szeretném kérni!
Az lenne a kérdésem, hogy ha char*-al tárolok stringet, akkor ez lehet -e függvény visszatérési értéke, és ha igen, akkor pontosan mit ad vissza? Konkrétan pl lehet ilyen, hogy :
char* fgv(char* valami) {
char *adat=''akármi'';
.
.
.
return(adat);
}
Akkor ez mit ad vissza? Címet? De elvileg az a string még megvan a memóriában? Vagy hogy van ez? És ez a függvény hogy kapja meg paraméterként a char*-ot? Bocs a lamerkedésért, csak házim csiszolgatásához kellene! Thnx előre is!
Aktív témák
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Brogyi: CTEK akkumulátor töltő és másolatai
- Ilyen olcsó sem volt még egy Apple notebook
- Xbox Series X|S
- Apple MacBook
- Meghozta az első, memórapánikból eredő áremelését az NVIDIA
- PlayStation 3
- A fociról könnyedén, egy baráti társaságban
- OLED monitor topic
- Google Home/Nest
- További aktív témák...
- Adobe Előfizetések - Adobe Creative Cloud All Apps - 12 Hónap - 15% AKCIÓ
- PC Game Pass előfizetés
- The Elder Scrolls Online Imperial Collector s Edition
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- MEGA AKCIÓ! - Jogtiszta Windows - Office & Autodesk & CorelDRAW - Azonnal - Számlával - Garanciával
- Apple iPhone 14 / 128GB / Kártyafüggetlen / 12HÓ Garancia / Akku: 85%
- Szép állapotban Lenovo ThinkPad T14s Gen 4 i5-1335u/16 GB/256 SSD/FHD+/IPS/Garancia 2027
- Telefon felvásárlás!! iPhone 11/iPhone 11 Pro/iPhone 11 Pro Max
- Beszámítás! Apple iPad 9 (2021) Wifi 64GB tablet garanciával hibátlan működéssel
- Apple iPhone SE 2020 128 GB Fehér 1 év Garancia Beszámítás Házhozszállítás
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
