Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Wskaźniki


Rekomendowane odpowiedzi

Opublikowano

Gdzieś wyczytałem, że dzięki wskaźnikom program będziesz szybciej działał.

Czy to ma w ogóle sens, czy dobrze to zrozumiałem?

Zawsze robiłem tak, że na początku deklarowałem zmienne, później funkcje, później idzie main.

Funkcje jeśli się da, to robię je bez argumentów funkcja(); ... No i funkcja pracuje na zmiennych globalnych.

 

No i teraz, jeżeli wewnątrz funkcji nie będę używał zmiennych globalnych, tylko wskaźników, to to wyjdzie na plus dla wydajności programu?

Oto w tym wszystkim chodzi?

 

2. Próbuję to jakoś przetestować, ale coś sypie błędami...

 

deklaracje:

float *w_a, a;

w_a=&a; //<<tu wywala error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

 

Plan mam taki, żeby w mainie używać tylko wskaźników *w_a i w funkcjach też.

Jak naprawić błąd i czy plan jest dobry?

 
 
 

 

Opublikowano

Plan nie jest dobry - zamiast próbować ślepo się zastosować do porad, zrozum czym są wskaźniki.

 

Wskaźnik to tylko adres innej zmiennej w pamięci i nie przyspiesza on działania programu sam z siebie i swojej wspaniałej obecności, trzeba go w miarę mądrze wykorzystać - a więc jak dla przykładu chcemy przekazać do funkcji np. jakiś duży napis, jakiś mocno wypełniony std::vector, uchwyt do pliku etc. to aby nie kopiować całej zawartości/zasobu/czegokolwiek przekazujemy wskaźnik/referencję i wtedy funkcja otrzymuje tylko adres oryginału w pamięci(zamiast pełnej i ciężkiej jak krowa kopii) - wtedy faktycznie program będzie działał szybciej(aczkolwiek opłaca się tylko dla większych typów, jak wspomniane std::string, std::vector itd.). Robienie czegoś takiego jak ty to kretyństwo i nie poprawi szybkości działania programu(a może nawet i pogorszy).

Opublikowano

No to nie umiejąc wskaźników wcale dużo nie straciłem...

Heh, a miałem plan awansować na wyższy poziom :P

Opublikowano

No to nie umiejąc wskaźników wcale dużo nie straciłem...

Heh, a miałem plan awansować na wyższy poziom :P

Przekazywanie ciężkich parametrów przez wskaźnik to tylko jedno z ich zastosowań, a wymieniłem tylko to ponieważ jest ono powiązane z optymalizacją o której mówiłeś.

Opublikowano

Faktycznie, korzystanie z wskaźników nie zawsze wpływa na przyspieszenie programu jednak... W większości przypadków stosuję wskaźniki, większa wygoda dla mnie pracując na adresach + dla programu wg mnie też jest to "wygodniejsze".

 

Szybki programik, zapisujący liczby do tablicy, który pokazuje różnice w zapisie przy pomocy wskaźników i bez.

b6xUVtx.png

 

Chociaż przy dzisiejszej mocy obliczeniowej procesorów, nie wiem czy jest sens w dyskusji "Czy wskaźniki są lepsze?". ;)

Opublikowano

@1361622928-U485574.pngopewtuds

podaj kod i poziom optymalizacji jaki włączasz w kompilatorze.

Eh, był to na szybko napisany kod. Kompilator to defaultowe ustawienia w C::B i na to kompilator z VS C++ 2008. Kod najzwyczajniej w swiecie tworzył tablice o podanej wielkosci i zapisywał do każdego miejsca w tablicy 1.

Opublikowano

Przerabiając kiedyś jeden z kursów, pojawiło się tam ciekawe porównanie w używaniu wskaźników. Nie używając wskaźników, mówimy programowi jaki rozdział w książce chcemy otworzyć, a następnie program musi w spisie treści znaleźć na jakiej stronie jest ten rozdział (pobrać adres w pamięci). Używając wskaźników podajemy stronę, którą chcemy aby otworzył czyli mamy jedną operację mniej - sprawdzenie w spisie treści.

Opublikowano

Przerabiając kiedyś jeden z kursów, pojawiło się tam ciekawe porównanie w używaniu wskaźników. Nie używając wskaźników, mówimy programowi jaki rozdział w książce chcemy otworzyć, a następnie program musi w spisie treści znaleźć na jakiej stronie jest ten rozdział (pobrać adres w pamięci). Używając wskaźników podajemy stronę, którą chcemy aby otworzył czyli mamy jedną operację mniej - sprawdzenie w spisie treści.

Oj oj czuje Zelenta i to tak śmierdzi jak po tygodniowych skarpetkach.

TuByłaSygnatura.png

Opublikowano

Przerabiając kiedyś jeden z kursów, pojawiło się tam ciekawe porównanie w używaniu wskaźników. Nie używając wskaźników, mówimy programowi jaki rozdział w książce chcemy otworzyć, a następnie program musi w spisie treści znaleźć na jakiej stronie jest ten rozdział (pobrać adres w pamięci). Używając wskaźników podajemy stronę, którą chcemy aby otworzył czyli mamy jedną operację mniej - sprawdzenie w spisie treści.

Tylko, ze szybsze jest skopiowanie jednego wpisu ze "spisu tresci" od skopiowania calego rozdzialu.

Nie pomagam na PW, od tego macie forum!!!

 

#PHP-things

 

 

08FMpDu.png

 

Opublikowano

Poczytałem sobie przed chwilą Symfonię i tam odniosłem wrażenie, że autor wręcz zaleca używania wskaźników do argumentów funkcji...

historyjka o zepsutym kranie :P

No ale, co jeżeli nie przekazuję argumentów do funkcji, oraz funkcja nic nie zwraca? Po prostu funkcja zmienia zmienne zadeklarowane przed funkcją...

Opublikowano

Oj oj czuje Zelenta i to tak śmierdzi jak po tygodniowych skarpetkach.

Możliwe, troszkę tego już przerobiłem. Zelent całkwiem ciekawie tłumaczy, przyjemnie się faceta słucha. :P

Opublikowano

Możliwe, troszkę tego już przerobiłem. Zelent całkwiem ciekawie tłumaczy, przyjemnie się faceta słucha. :P

Według mnie za dużo papla za mało robi, stosunek wydajności/czasu trochę dla mnie słaby.

TuByłaSygnatura.png

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...