Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 28 lut 2025, o 00:27


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 22 mar 2015, o 20:53 
Offline
Użytkownik

Dołączył(a): 29 lip 2014
Posty: 195
Pomógł: 44

Witam,

chciałem napisać oprogramowanie, w którym ograniczę do minimum występowanie zmiennych lokalnych. Załóżmy, że jest tablica, którą zadeklarowałem jako static w jednej z funkcji, na przykład przy inicjalizacji czegoś tam - np. używanego sprzętu. I teraz chcę mieć dostęp do elementów tej tablicy z różnych funkcji programu. Jak to zrobić, bo już się zapętliłem i nie mam na to pomysłu? Skorzystałem ze wskaźnika, któremu przypisałem adres tejże tablicy, no ale...właśnie, przy takim podejściu, ten wskaźnik musi być zdefiniowany jako zmienna globalna. Czy da się to jakoś sprytnie zrobić, aby tejże zmiennej globalnej ( wskaźnika ) się pozbyć ? Pomóżcie, proszę. Poniżej kod testowy, ilustrujący zagadnienie.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Pozdrawiam, QuadMan.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 mar 2015, o 21:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1033
Lokalizacja: Trójmiasto
Pomógł: 190

Przecież wywołując funkcję jako parametr możesz przekazać zerowy element tablicy, albo po prostu wskaźnik do tego elementu.
Nie trzeba wtedy żadnej zmiennej globalnej.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 mar 2015, o 22:34 
Offline
Użytkownik

Dołączył(a): 29 lip 2014
Posty: 195
Pomógł: 44

Dzęiki, Panowie.

xentis napisał(a):
Przecież wywołując funkcję jako parametr możesz przekazać zerowy element tablicy, albo po prostu wskaźnik do tego elementu.
Nie trzeba wtedy żadnej zmiennej globalnej.


Też racja, choć w tym wypadku wolałbym nie wywoływać funkcji z parametrami - jest ich trochę, i za wiele musiałbym modyfikować, zwłaszcza że tak naprawdę potrzebuję w nich tylko adres pierwszego elementu tablicy.

kamaciej napisał(a):
A po co Ci ten wskaźnik? Jeśli zrobisz funkcje dostępową do tablicy np. uint8_t get_value(uint8_t index), i funkcje zapisania do tablicy np. void set_value(uint8_t value, uint8_t index) i ew. zrobisz je inline to będziesz miał ukrytą tablicę bez niepotrzebnego wskaźnika. Obydwie *_value(...) wyprowadzasz do innego pliku a tablicę deklarujesz statyczną i już nie ma funkcji globalnych (bo chyba o nie chodziło a nie o lokalne... ).

Co wolisz...


Twoje metoda, to jest właśnie to, czego szukałem :-). Jeszcze raz dzięki.

Pozdrawiam, QuadMan.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO