私はこの質問に対する答えを探していましたが、少し難しいです。
だからそうなるのです!
int square(int* a){
return (*a)*(*a)
}
int main(){
int b = 20;
square(&b);
}
私の質問は: 変数 a と b はどこに保存されていますか?
私の意見では、変数 b はスタックに格納されていますが、a に関していくつか質問があります。
square(&b) を呼び出すと、参照が渡されます。この場合、スタック内の変数 b のアドレスです。
次に、関数 square(int* a) は (int* a) 引数を受け取ります。これは、この場合はスタック内の変数 b の参照であるポインターを受け取ることを意味します。したがって、変数 a の値は変数 b のアドレスになります。ただし、両方ともスタックに格納されます。私はそれがスタック上にあると確信していますが、...または、bがスタックにあり、aがヒープにあるのでしょうか? ところで、ありがとう。