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

Jaki zapis wskaźnika na funkcję jest lepszy?

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
822 wizyt
pytanie zadane 26 kwietnia 2016 w C i C++ przez Konrad Nabożny Stary wyjadacz (13,480 p.)

Witam. Lepiej napisać coś takiego:

#include <iostream>

using namespace std;

void funkcja()
{
    cout<<"napis";
}

int main()
{
    void (*wskaznik) () = funkcja;

    wskaznik();

    return 0;
}

 

Czy takiego: 

#include <iostream>

using namespace std;

void funkcja()
{
    cout<<"napis";
}

int main()
{
    void (*wskaznik) ();

    wskaznik = &funkcja;

    wskaznik();

    return 0;
}

 

2 odpowiedzi

+3 głosów
odpowiedź 26 kwietnia 2016 przez adrian17 Mentor (351,140 p.)
wybrane 26 kwietnia 2016 przez Konrad Nabożny
 
Najlepsza

Najprościej:

auto ptr = &funkcja;

 

komentarz 26 kwietnia 2016 przez Konrad Nabożny Stary wyjadacz (13,480 p.)
Najprościej, ale czy najlepiej?
1
komentarz 26 kwietnia 2016 przez Radfler VIP (101,030 p.)
I najprościej, i najlepiej...
komentarz 26 kwietnia 2016 przez Konrad Nabożny Stary wyjadacz (13,480 p.)
O, to jeżeli mógłbyś, to bardzo prosiłbym o wytłumaczenie czym jest auto ptr, ponieważ według mojego kompilatora 'ptr' does not name a type :)
komentarz 26 kwietnia 2016 przez Radfler VIP (101,030 p.)
Masz włączony C++11? To jest ważne.
komentarz 26 kwietnia 2016 przez Konrad Nabożny Stary wyjadacz (13,480 p.)
Mam pobraną najnowszą wersję Code::Blocks wraz z najnowszym kompilatorem, więc myslę że C++11 jest domyślnie włączony.
komentarz 26 kwietnia 2016 przez Radfler VIP (101,030 p.)
Sprawdź na wszelki wypadek...
komentarz 26 kwietnia 2016 przez Konrad Nabożny Stary wyjadacz (13,480 p.)
Ehh.. Był wyłączony... Program kompiluje się, lecz od razu crashuje.
komentarz 26 kwietnia 2016 przez Konrad Nabożny Stary wyjadacz (13,480 p.)
Ok doszedłem do tego co było nie tak. Zdebugowałem i okazało się że błąd to SIGSEGV czyli gdzieś wyszedłem poza pamięć. Funkcję wciąż wywoływałem słowem "funkcja" zamiast tak jak powinno być "ptr". Trochę nie rozumiem sensu tego ptr. Wychodzi na to że nie mogę zastąpić tego słowa niczym innym, oraz mogę tak odwoływać się tylko do jednej funkcji. :/
komentarz 26 kwietnia 2016 przez Radfler VIP (101,030 p.)
Chodź na chat, pokaż kod... :D
komentarz 26 kwietnia 2016 przez niezalogowany
ale inni też by chcieli wiedzieć prawda??
komentarz 26 kwietnia 2016 przez Radfler VIP (101,030 p.)
Masz kod o który pytał. Nic wielkiego: http://wklej.org/id/2350795/
komentarz 26 kwietnia 2016 przez Konrad Nabożny Stary wyjadacz (13,480 p.)
Okazało się że to moje małe niedopatrzenie, porady użytkownika @Radfler okazały się w 100% poprawne :)
1
komentarz 26 kwietnia 2016 przez niezalogowany
nie uważaj tego za moje nerwy czy coś, ale inni też by chcieli wiedzieć i jak coś to możemy odesłać ich do tego tematu :)
+1 głos
odpowiedź 26 kwietnia 2016 przez daan Pasjonat (17,640 p.)

Ja bym użył 1 sposobu, ale nie wiem czy jest on faktycznie lepszy. No i zależy też czy od razu możesz coś przypisać, czasami decyzja o przypisaniu zapada później, wtedy używasz 2 opcji. Ale jeżeli to c++ to polecam spróbować z std::function, też ciekawa opcja.

1
komentarz 26 kwietnia 2016 przez adrian17 Mentor (351,140 p.)
std::function jest znacznie cieższym uniwerwalnym wrapperem, nie powinno się go używać do zwykłych wskaźników na funkcje.
komentarz 26 kwietnia 2016 przez daan Pasjonat (17,640 p.)
Tego pod uwagę nie wziąłem, ale w takim wypadku i ja się czegoś dowiedziałem :)

Podobne pytania

0 głosów
1 odpowiedź 186 wizyt
0 głosów
1 odpowiedź 1,710 wizyt
pytanie zadane 25 sierpnia 2019 w C i C++ przez DamianW Bywalec (2,080 p.)
0 głosów
0 odpowiedzi 182 wizyt
pytanie zadane 15 marca 2016 w C i C++ przez falauthy Stary wyjadacz (11,550 p.)

93,187 zapytań

142,203 odpowiedzi

322,024 komentarzy

62,515 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2581p. - dia-Chann
  2. 2537p. - Łukasz Piwowar
  3. 2528p. - Łukasz Eckert
  4. 2514p. - CC PL
  5. 2476p. - Tomasz Bielak
  6. 2445p. - Łukasz Siedlecki
  7. 2443p. - rucin93
  8. 2373p. - Marcin Putra
  9. 2310p. - Michal Drewniak
  10. 2156p. - Anonim 3619784
  11. 2152p. - Adrian Wieprzkowicz
  12. 2105p. - Mikbac
  13. 1733p. - rafalszastok
  14. 1701p. - Michał Telesz
  15. 1580p. - ssynowiec
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...