Wiem, kiedy używamy nazwy funkcji jako wartości, funkcja jest automatycznie konwertowana na wskaźnik. spojrzeć na poniższy kod:przypisanie funkcji i wywołanie funkcji w C++?
int print(int a)
{
return a;
}
int main()
{
int (*p)(int) = print;
int (*q)(int) = &print;
cout << p(8) << endl;
cout << (*p)(8) << endl;
}
dlaczego int (*p)(int) = print;
, druku jest wskaźnikiem, a int (*p)(int) = &print;
, & druku jest adres do wskaźnika, co odpowiada?
Z drugiej strony, gdy używamy wskaźnika do funkcji wywoływania funkcji, dlaczego są one równoważne z p(8)
i (*p)(8)
?
Myślę, że to tylko dla wygody , że nie musisz wyraźnie wskazywać funkcji funkcji podczas ich wywoływania. Jeśli użyjesz 'typedefs', możesz pracować ze wskaźnikiem funkcji bez użycia' * ', który jest całkiem niezły – user463035818
Możliwy duplikat [Jak działa dereferencja wskaźnika funkcji?] (Http://stackoverflow.com/questions/2795575/how-does-dereferencing-of-a-function-pointer-happen) –
@SimonKraemer dziękuję. Ale link wyjaśnia tylko dereferencję, moje pytanie obejmuje także przypisanie wskaźnika funkcji. – sydridgm