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

Zmienna zachowująca swoją wartość?

Object Storage Arubacloud
–1 głos
565 wizyt
pytanie zadane 31 maja 2016 w C i C++ przez Avernis Nałogowiec (27,400 p.)
Wiem że zmienne statyczne zachowują swoją wartość, ale chciałbym ja mieć osobną dla każdej funkcji
komentarz 31 maja 2016 przez Avernis Nałogowiec (27,400 p.)
Jak to dla każdej osobną zmienną statyczną? Myślałem że zmienna statyczna jest łączna dla wszystkich funkcji/klas/uni itp
komentarz 31 maja 2016 przez criss Mędrzec (172,590 p.)

Jak to wspólna dla wszystkich klas? 

class A
{
   static int a; 
   // wspolna dla wszystkich obiektow klasy A
};

void f()
{
   static int a; 
//zachowuje swoja wartosc przez caly czas dzialania programu
// ale jest dostepna tylko wewnatrz f()
}

 

komentarz 31 maja 2016 przez Avernis Nałogowiec (27,400 p.)
Ale pisałem, że będę wywoływał funkcję kilka razy, i w 50% przypadkach będą tam różne wartości
komentarz 31 maja 2016 przez criss Mędrzec (172,590 p.)
co.

To są efekty zadawnia pytan w formie koncertu zyczeń.

Chyba nikt nie wie o co ci chodzi
komentarz 31 maja 2016 przez Avernis Nałogowiec (27,400 p.)
Chyba masz rację, zawsze te pytania jakoś tak niezrozumiale mi wychodzą

1 odpowiedź

0 głosów
odpowiedź 31 maja 2016 przez niezalogowany
to w każdej funkcji robisz zmienną statyczną
komentarz 31 maja 2016 przez Avernis Nałogowiec (27,400 p.)
Ale jak wywołam kilka razy funkcję. O to mi chodzi
komentarz 31 maja 2016 przez niezalogowany
to przecież możesz sprawdzać na początku wartość tej zmiennej
komentarz 31 maja 2016 przez MetRiko Nałogowiec (37,110 p.)

Najprościej mówiąc.. Patrząc na twoją funkcję wnioskuję, że chcesz założyć tzw. flagi na klawisze, które zostały naciśnięte. To jak chcesz to teraz zrobić jest słabym rozwiązaniem. Osobiście zrobiłbym to tak (oparte na doświadczeniu):
1. Tworzysz tablicę TabKey jednowymiarową o ilości elementów n (gdzie n=ilość klawiszy na klawiaturze), oczywiście jest to tablica bool.
2. Jeżeli zostanie naciśnięty klawisz o danym ID to TabKey[ID]=true;
3. Na końcu pętli z logiką robisz fora i zerujesz tablicę.
To jest rozwiązanie po pierwsze szybsze po drugie łatwiejsze i prostsze :D
----------------
PS Następnym razem gdy będziesz miał pytanie do konkretnego przykładu koderskiego to podaj od razu fragment kodu o który pytasz.. łatwiej jest wtedy zrozumieć o co może ci chodzić.
----------------
PS2 Oczywiście TabKey aktualizuje się w pętli gdzie odczytujesz klawisze.. w logice nie zmienia się ona w żaden sposób poza czyszczeniem na końcu.

komentarz 31 maja 2016 przez Avernis Nałogowiec (27,400 p.)
No, ale czy wtedy to by się nie wykonywało do puki nie puszczę klawisza? Ja potrzebuję żeby wciskasz raz, i potem musisz na nowo. Ale nie wiem jak zachować tą wartość
komentarz 31 maja 2016 przez MetRiko Nałogowiec (37,110 p.)

Jeżeli chcesz aby klawisz został odczytany tylko raz musisz troszeczkę zmienić to co napisałem wyżej.. mianowicie:
1. TabKey to tablica intów.. na początku wyzerowana
2. Jeżeli w pętli odczytującej zostanie naciśnięty klawisz i TabKey[ID]==0 to TabKey[ID]=1
3. Na końcu pętli z logiką wykonujesz takiego fora: for(int i=0; i<TabKeySize; i++) if(TabKey[i]==1) TabKey=2;
4. Jeżeli w pętli z odczytem klawisz nie został naciśnięty (nie jest ciągle trzymany) to TabKey[ID] z 2 zmieniasz na 0
5. Teraz jeżeli będziesz chciał użyć np. warunku if(jeżeli naciśnięty klawisz W) to piszesz if(TabKey[ID_klawisza_w]==1) {jakiś kod.. np. skok postaci}
Mam nadzieję, że teraz jest już wszystko jasne :D

Podobne pytania

0 głosów
1 odpowiedź 107 wizyt
0 głosów
0 odpowiedzi 114 wizyt
pytanie zadane 24 stycznia 2016 w C i C++ przez Whynotpeter Nowicjusz (140 p.)
0 głosów
1 odpowiedź 2,907 wizyt

92,568 zapytań

141,423 odpowiedzi

319,629 komentarzy

61,956 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!

...