• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Return, zwracanie w c++

Object Storage Arubacloud
+2 głosów
1,227 wizyt
pytanie zadane 21 lipca 2015 w C i C++ przez Sinnley Stary wyjadacz (12,810 p.)
Witam, może to głupie i bardzo "nowicjuszowskie" pytanie, ale co oznacza, że jakas funkcja, albo cokolwiek innego " zwraca " kod albo cokolwiek innego? Oczywiscie logicznie i doslownie to rozumiem , ale jednak gdy czytam różne wiki to mam z tym problem. Generalnie szuakm różnicy miedzy funkcjami getch() i getchar(), a różnica podobno jest we zwracanym kodzie, czego kompletnie nie czaje :p

2 odpowiedzi

+1 głos
odpowiedź 21 lipca 2015 przez Krawiec91 Pasjonat (19,600 p.)
wybrane 21 lipca 2015 przez Sinnley
 
Najlepsza

Funkcje getch() i getchar() zwracają wartość typu int, tak wynika z ich składni. Używane są do wprowadzania pojedyńczego znaku z klawiatury w konsoli. Różnią się tym (może także czymś jeszcze;)), że funkcja getchar() daje "echo" tego co wprowadzimy z klawiatury. Tłumacząc po chłopsku, posłuże się kodem:
 

#include <iostream>
#include <cstdio>
#include <conio.h>

using namespace std;

int main()
{
  char literka;
  literka=getch();
  cout<<"\n\n"<<literka<<endl<<endl;
  literka=getchar();
  cout<<"\n\n"<<literka<<endl<<endl;
  return 0;
}

Przy wprowadzaniu znaku z użyciem getch() nie będziesz widzał co wprowadziłeś. Wciśniesz klawisz 'a', kod ascii litery 'a' (każda litera ma kod liczbowy, więc może być zapisana nie tylko do zmiennej char, ale także do zmiennej int, jak jest w definicji obu funkcji) zostanie zapisany do zmiennej literka, ale nie będziesz widział w konsoli, że taki klawisz wcisnąłeś.
Przy użyciu funkcji getchar() będzie widzał w konsoli co wprowadziłeś. Wciskasz klawisz 'a', kod litery 'a' zostanie zapisany do zmiennej literka, a ponadto będzie to echo, czylu będziesz widział w konsoli, że wprowadziłeś 'a'.

komentarz 21 lipca 2015 przez Krawiec91 Pasjonat (19,600 p.)
Napisałem, że getch() i getchar() zwracają wartość int, a potem w kodzie użyłem zmiennej char. Obie funkcję zwracają kod ascii wprowadzonego znaku, czyli liczbę. Przypisując wynik funkcji, getch() albo getchar() do zmiennej int, a potem wyświetlając przy użyciu standardowego cout, zobaczymy na ekranie kod znaku. Przypisując do zmiennej char, a potem wyświetlając zobaczymy znak, a nie jego kod liczbowy.
Dla procesora to żadna różnica, bo i tak operuje na kodzie liczbowym znaku. Dla nas wygodniej używać znaku, niż używać jego kodu ascii.
1
komentarz 21 lipca 2015 przez Krawiec91 Pasjonat (19,600 p.)

Co do działania jakiejkolwiek funkcji... Opisać to mógłbym na przykładzie urabianiu betonu w betoniarce.
Wprowadzasz do betoniarki "zmienne" (piasek, woda, cement, wapno), no i prąd do silnika, żeby gruszka się kręciła.;) Wciskając przycisk ON wywołujesz funkcję urabianie betonu w betoniarce, jesteś programem głównym - main(). Betoniarka wykonuje operacje na zmiennych (miesza to co do niej zasypałeś). Jak wszystko co miała zrobić, zrobiła (beton urobiony), betoniarka może zwrócić wartość, czyli możesz kulturalnie podjechać taczkami pod betoniarkę i wypuścić urobek. Funkcja zwraca wartość do temu kto ją wywołał czyli Tobie.
Czyli jak napisał Pan Kulomb, funkcja nie zwraca kodu (czyli w przypadku betoniarki, to że mieszała), tylko jakieś zmienne, wartości (w przypadku betoniarki, urobiony beton).

komentarz 21 lipca 2015 przez Sinnley Stary wyjadacz (12,810 p.)
Dzięki teraz czaje ! :)

PS:  Przyklad z betoniarka genialny :D
0 głosów
odpowiedź 21 lipca 2015 przez Pan Kulomb Pasjonat (18,630 p.)
Funkcje nie zwracają kodu języka lecz zmienne/obiekty/wskaźniki. Odbywa się to poprzez zwyczajne przeniesienie wartości. Z tego co wiem getch zwraca char, a getchar int.
komentarz 21 lipca 2015 przez Magicone Nałogowiec (45,100 p.)
Zrzucić chara do inta i odwrotnie to praktycznie żaden problem(static_cast albo zwyczajnie nawiasy). Różnica między getch, a getchar jest taka, że getch po wciśnięciu jednego znaku zwraca go bez wyświetlania na ekranie. Natomiast getchar wyświetla na ekranie wpisany ciąg, można w nim wpisywać kilka znaków, ale zostanie zwrócony ten pierwszy.

Podobne pytania

0 głosów
1 odpowiedź 189 wizyt
pytanie zadane 24 kwietnia 2020 w Java przez danielo665 Obywatel (1,040 p.)
+1 głos
3 odpowiedzi 1,303 wizyt
pytanie zadane 24 kwietnia 2016 w C i C++ przez Pablo99 Obywatel (1,110 p.)
0 głosów
1 odpowiedź 214 wizyt

92,568 zapytań

141,420 odpowiedzi

319,622 komentarzy

61,954 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...