Wskaznik do funkcji

0

Dlaczego nie moge wyswietlic tego co zwrocila funkcja (czyli sume dwoch liczb ?) za pomoca wskaznika do funkcji kompilator napisal ze jest za duzo argumentow nie wiem jak to rozumiec ? :(

 
#include <iostream>

using namespace std;
int funkcja(int l,int l2){
    int suma;
    suma = l + l2;
    return suma;
    }
int main()
{
    int liczba =10;
    int liczba2 =20;

    funkcja(liczba,liczba2);

    int (*wsk_fun)(int,int) = funkcja;



    cout << (*wsk_fun)();   // TA linijka!!

    return 0;
}

2

No a co to niby ma wyświetlić skoro nie podałes argumentów których ta funkcja wymaga? o_O Ja tam widze puste nawiasy...

0

A to nie zwroci sumy tych dwoch liczbn? to co zwraca funkcja ? czyli suma = l + l2???

1

Ale jakich "tych"? o_O Ja tu:

(*wsk_fun)(); 

Nie widzę żadnych liczb podanych w nawiasach jako argumenty funkcji.

0

cout << (*wsk_fun)(liczba,liczba2);

Dziala dzieki czyli od teraz ten wskaznik do funkcji dziala jak tamta funkcja a ja myslalem ze bedzie miec wartosc przypisana przez funkcja (to co zwracilo czyli sume )

0

Wskaźnik do funkcji pokazuje na funkcje a nie na żaden jej wynik.

1

Dzieki
a takie cos

int *tab = new int [80] ;
Taki zapis tworzy tablice 80 elementow bez nazwy na ktorej bedzie sie pracowac za pomoca tab czyli wskaznika ?

jakos mnie to myli z tablica zwykla czemu nie takie cos int *tab[80] = new int [80]

3

Bo to nie tworzy żadnej "tablicy". To alokuje blok o rozmiarze 80*sizeof(int) bajtów i zwraca adres początku tego bloku.
A to że możesz używać [] wynika tylko z tego że C++ pozwala na taki zapis arytmetyki wskaźnikowej. wskaźnik[x] to to samo co *(wskaźnik+x). Równie dobrze mógłbyś zaalokować sobie tylko 1 element a mimo to używać operatora [] (pewnie z opłakanym skutkiem, ale zawsze).

0

Bardzo ci dziekuje :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1