- Microsoft Excel topic
- YouTube
- Letartóztatták a bitcoin-Jézust
- A franciáknak elege van abból, hogy minden gyerek mobilozik
- Sokat fogyaszt az AI, egyre több az adatközpont, kell az atomenergia
- Mobilinternet
- Crypto Trade
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Synology NAS
- Az iPadOS-re írt appokra is díjat vet ki az Apple
Aktív témák
-
-=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!hey-ho-let's-go
-
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/-bocs a hardwerláma-
-
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]='“The workdays are long and the weekend is short? Make a turn! Bike every day, bike to work too!”
Aktív témák
- Milyen processzort vegyek?
- Formula-1 humoros
- Elektromos rásegítésű kerékpárok
- Skoda, VW, Audi, Seat topik
- Véroxigénszintet is mér a Honor Band 5
- bb0t: Gyilkos szénhidrátok, avagy hogyan fogytam önsanyargatás nélkül 16 kg-ot
- exHWSW - Értünk mindenhez IS
- Microsoft Excel topic
- Házimozi belépő szinten
- Elektromos autók - motorok
- További aktív témák...
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Promenade Publishing House Kft.
Város: Budapest