Skocz do zawartości

C++ zmienne statyczne i globalne, funkcje z parametrami różnych typów, przeciążanie funkcji


Mativve
 Udostępnij

Rekomendowane odpowiedzi

  • Administrator

Witam wszystkich.

Potrzebuję pomocy przed sprawdzianem który mam w środę tj.(12.10.2016) z następujących tematów:

  • zmienne statyczne,
  • zmienne globalne,
  • funkcje z parametrami różnych typów,
  • przeciążanie funkcji;

Niestety przez nieobecność nie ogarniam za bardzo tego tematu. Będę wdzięczny za jakieś przykłady oraz jakąkolwiek pomoc.

Nagrodzę reputacją

Odnośnik do komentarza
Udostępnij na innych stronach

  • zmienne statyczne, (zwykłe int, string itp.)
  • zmienne globalne, (np. static int, pamięta wartość powiedzmy że cały czas)
  • funkcje z parametrami różnych typów, (no różne typy)
  • przeciążanie funkcji; (jedna nazwa funkcji w wielu różnych wersjach powiedzmy)

np coś takiego jak masz funkcje dodaj

void dodaj(int a, int b);
void dodaj(string tekst, int liczba);

dodaj("Tekst", 15);
dodaj(15,15);

W pierwszym weźmie pod uwagę drugą f-cję, a w drugim pierwszą Chyba

Odnośnik do komentarza
Udostępnij na innych stronach

  • Ekspert

Też sobie zaczynam kodować w Dev-C++ i na prawdę fajne narzędzie. O wiele lepiej jest mi działać na nim niż na CodeBlocks.

Zmienne statyczne są to po prostu wszystkie zmienne, których używasz w chwili wywołania, na przykład:

int cukierki;
float delta;

Natomiast zmienne globalne to takie, które definiujesz już na samym początku i nie zmieniają wartości do nich przypisanej, na przykład:

int opony = 2;
int sklepy = 10;
Odnośnik do komentarza
Udostępnij na innych stronach

Oczy mi łzawią jak na to patrzę panowie . Rozumiem, że celujesz wyżej niż 3 z sprawdzianu ?

Zmienne statyczne to nie int,float czy string.

Wyżej wymienione to typy danych, a nie typy zmiennych.

Zmienna statyczna to coś pomiędzy zmienna lokalną a zmienną globalną. Ponieważ zmienne statyczne są "widoczne" tylko w obrębie bloku ( funkcji ) w którym zostały zaimplementowane. Po wyjściu z funkcji pamięć zmiennej nie jest opróżniana. Wręcz przeciwnie. Zmienne te zapamiętują nadane im wartości.

Każda zmienna globalna jest zarazem zmienną statyczną.

Zmienne globalna są "widziane" w obrębie całego programu. Pamięć dla nich rezerwowana jest na cały okres działania programu, dlatego też unika się ich stosowania. Często zastępuję się je zmiennymi lokalnymi bądź stosuje przesłanianie zmiennych. Wartość zmiennym globalnym, możesz nadać w każdej chwili - i nie prawdą, jest stwierdzenie @rogue - ponieważ zaprezentowany przez niego kod to nic innego jak inicjacja zmiennej. Wartości nie zmieniają tylko stałe ( jak sama nazwa wskazuje ).

Co do funkcji z parametrami. (Każdemu parametrowi musisz nadać typ oraz nazwę)*. Naucz się też rozróżniać definicje funkcji od jej deklaracji abyś nie uznał tego za przeciążenie funkcji. Rodzaje przekazywania argumentów do funkcji chyba nie będziesz miał, więc nie będę tłumaczył.

Parametrom możesz nadać dowolny typ danych. Przekazane argumenty muszę mieć ten sam typ co parametry. Nie będę tu wspominał o rzutowaniu bo całkiem ci się wszystko pomiesza  

Co do przeciążenia funkcji.Tutaj wytłumaczył trochę @MatYs ( przynajmniej tutaj ).

Najprościej rzecz ujmując, to sytuacja w której utworzyliśmy kilka funkcji o tej samej nazwie. Funkcje te muszą jednak różnić się typem bądź ilością parametrów. Jeśli jesteś zainteresowany w tym miejscu pojawia się pewien haczyk. Jeśli chcesz to poczytaj o funkcjach z parametrem domniemanym i sprawdź jak tam zachodzi przeciążanie/(przeładowanie) funkcji.

Gdybym coś napisał niejasno bądź coś pominął, pisz śmiało. Postaram się Ci wytłumaczyć  

Odnośnik do komentarza
Udostępnij na innych stronach

Problem wciąż nierozwiązany? Dodaj swoją odpowiedź

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto. Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
 Udostępnij

×