関数内のローカル変数は関数呼び出しが終わったあとはメモリが開放されるので配列を戻り値にしても正しい結果が得られないということでしたが、下の、整数のポインタを返す関数を呼び出すプログラムを実行した結果、4と正しい結果が表示されました。
呼び出しが終わったらメモリが開放されるのでpに格納されたポインタから値をたぐり寄せることは不可能になるのではないのでしょうか?
このことについて詳しく教えて下さると助かります。
c
1コード 2#include<stdio.h> 3 4int *func(int a, int b){ 5 int *r; 6 int c = a+b; 7 r = &c; 8 return r; 9} 10 11int main(){ 12 int *p; 13 p = func(1,3); 14 printf("%d\n",*p); 15} 16
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。