ここでは何が起こっているのかはっきりとわかりません。同じボディに異なるパラメータを持つ2つの異なる関数が同じメモリ位置に値を返します
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int *f(int x){
int p;
p=x;
return &p;
}
int *g(int x){
int y;
y=x;
return &y;
}
int main(){
int *x,*y;
x=f(1000);
y=g(250);
*x = *x + 250;
printf("%d\n",*y);
return 0;
}
出力: - 500
どのライン "* X = * X + 250" 変更 "* y" の値を来りますか?なぜ出力は250ではないのですか?
ローカルポインタを返すことはできません – stackptr
関数が終了するとスコープの外に出る_local_変数へのポインタを返しています。ここには何百もの重複があります。 –
これは未定義の動作です。 – rsp