1001 * код-*
#include <bits/stdc++.h>
using namespace std;
int *fun()
{ static int a;
++a;
cout<<"value of a = "<<a<<endl;
return &a;
}
int main() {
cout<<"simple call \n";
fun();
cout<<"calling inside sizeof \n";
cout<<sizeof(fun())<<endl;
cout<<"calling inside pow \n";
cout<<pow(2,*fun())<<endl;
return 0;
}
Выход-
simple call
value of a = 1
calling inside sizeof
8
calling inside pow
value of a = 2
4
Я сомневаюсь, как оператор sizeof вычисляет размер возвращаемого типа функции. Я предполагаю, что сначала вызывается функция, затем она возвращает адрес своей статической переменной, и оператор sizeof оперирует этим значением. Но здесь прямо указывается размер указателя. И если я использую то же самое удовольствие внутри pow (), то он сначала вызывается, а затем выполняется дальнейший расчет.