Mam zdefiniowane niektóre funkcje i wydrukować swój adres tak:C++ wskaźnik nie działać zmieniła
#include<iostream>
#include <string>
using std::cout;
std::string func()
{
return "hello world\n";
}
int func2(int n)
{
if (n==0)
{
cout << func2 << std::endl;
return 1;
}
cout << func2 << std::endl;
return n + func2(n - 1);
}
//================================================
int main()
{
int (*fun)(int) = func2;
cout << fun;
cout << std::endl << func2(3);
}
Kiedy drukować nazwą funkcji (adres) wszystko drukują 1
na moim kompilatora (Mingw gcc 4.8) .
Czy wszystko jest w porządku?
Zakładając, że rozmiar wskaźnika funkcji nie jest większy niż rozmiar 'unsigned long long int'. Powinieneś również dodać "const" do obsady, aby zapobiec wypadkom. –
Tak, cóż ... w C++ 11 long long ma co najmniej 64 bity. – juzzlin
Tak? Co jeśli wskaźniki są 128-bitowe w przyszłości? Kiedyś mieli tylko 16 bitów. –