我的函數有未定義的行爲?由於有局部變量c,所以它在自動定位,所以它會在執行函數後被破壞? (範圍端)是我的代碼未定義行爲
int* calculate(int* a,int* b)
{
int c=(*a)+(*b); //local variable c
return &c;
}
int main()
{
int a=12;
int b=23;
int* ptr=calculate(&a,&b);
std::cout<<*ptr<<endl;
}
是的,它是UB。你正在返回一個局部變量的地址。 – juanchopanza
好的,非常感謝你;) –
好的謝謝沒有使用c變量,只是返回(* a)+(* b);那也將是未定義的行爲?因爲沒有局部變量。 –