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

Return, zwracanie w c++

VPS Starter Arubacloud
+2 głosów
1,181 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ź 184 wizyt
pytanie zadane 24 kwietnia 2020 w Java przez danielo665 Obywatel (1,040 p.)
+1 głos
3 odpowiedzi 1,297 wizyt
pytanie zadane 24 kwietnia 2016 w C i C++ przez Pablo99 Obywatel (1,110 p.)
0 głosów
1 odpowiedź 198 wizyt

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...