Portál AbcLinuxu, 10. května 2025 16:03

Dotaz: funkce pro načítení hodnot z klavesnice

12.1.2020 19:26 Dooyer
funkce pro načítení hodnot z klavesnice
Přečteno: 284×
Odpovědět | Admin
vytvořil sem si funkci pro načtení hodnot z klávesnice

void nacti(int *x, int *y, int *z) { scanf("%d%d%d",x,y,z); }

Zadání bylo načíst hodnoty z klávesnice procedurou pomocí ukazatele

v hlavním programu jsem to zavolal nacti(&a,&b,&c)

Mám to správně? a pokud ano/ne vysvětlí mi někdo proč tam musí být int *x? když je to ukazatel tak ukazuje na x? a do x uložím tu hodnotu co zadam do klavesnice takze kdyz to volám musím dát ,,&,, před proměnnou a tím ji adresuji pro toho ukazatele viz. *x? nebo jak?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

12.1.2020 20:57 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: funkce pro načítení hodnot z klavesnice
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mám to správně?
V princípe áno.
proč tam musí být int *x
Zápisom "int *x" deklaruješ premennú/parameter s menom "x". Tiež hovoríš, že tá premenná je typu "pointer na int". Keď vykonávanie funkcie skončí, tak tá premenná zanikne. Ale keďže, tá premenná je typu pointer, tak to miesto v pamäti kam ten pointer ukazoval, stále existuje. Tým sa dosiahne to, že hodnota získaná vo funkcii je dostupná aj po skončení vykonávania tej funkcie.
když je to ukazatel tak ukazuje na x?

Nie. Ukazuje na miesto v pamäti, ktoré bude určené tam, kde tá funkcia bude použitá/zavolaná. Tam ide o to, čo je to parameter funkcie. Je to označenie nejakej hodnoty, ktoré platí počas vykonávania tej funkcie. Akú hodnotu tá premenná označuje, to sa rozhodne, keď tú funkciu zavoláš.
a do x uložím tu hodnotu co zadam do klavesnice
Nie celkom. Hodnota načítaná z klávesnice bude uložená na miesto v pamäti, na ktoré ukazuje pointer uložený v premennej x. Keď máš premennú 'a', tak výraz '&a' znamená "ukazovateľ na miesto v pamäti, kde je uložená hodnota premennej 'a'". Ak má premenná a hodnotu 13, tak tá 13 je niekde v pamäti. Poradové číslo tej pamäťovej bunky, kde je tá 13 uložená, to je "pointer na a". Keď do a priradím 25. Tak prepíšem hodnotu v tej istej pamäťovej bunke - teda na tej istej adrese bude miesto hodnoty 13 hodnota 25.
12.1.2020 22:24 debian+
Rozbalit Rozbalit vše Re: funkce pro načítení hodnot z klavesnice
Odpovědět | | Sbalit | Link | Blokovat | Admin
Kazde premenna ma adresu a velkost. V C ma funkcia svoj vlastny beh - v nom definovane premmenne a parametre sa vykonani zahodia. Pred volanim sa parametre skopiruju (ak nie je optimalizovany preklad) a tie sa pouziva (co je napr. lahsie skopirovat smernik ako pole s 20 prvkami, ked sa snazit co najvecsiu efektivitu).

Scanf chce adresu. Ak mas chaos, tak si definuj nacti ako:
void nacti(int *number_1, int *number_2, int *number_3) { … } 
Gréta avatar 15.1.2020 19:45 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: funkce pro načítení hodnot z klavesnice
Odpovědět | | Sbalit | Link | Blokovat | Admin

fakt to zadání bylo jako takhle pitomí?? scanf de přeci zavolat rovnou bez nějaký další funkcičky ne nechce se něco víc?? předminulej domácák byl težší si jako myslim ;D

Zelená energetická soustava založená na obnovitelnejch zdrojích energie versus realnej svět 🤡🇪🇸

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.