#include<stdio.h>
int* check(int,int);
int main()
{
int *c,t = 2;
c = check(10,20);
printf("t = %d\n",t);
printf("c = %d\n",*c);
return 0;
}
int* check(int i,int j)
{
int *p,*q;
p = &i;
q = &j;
if(i>=45)
return (p);
else
return (q);
}
私は次のようにコードの出力を取得しています:
t = 2
c = 2
なぜ?概念によれば、cに返される値はjアドレスです。つまり、* cの値は20ですが、cのprintfステートメントの前にprintfステートメントがあるため、*cの値はスタックとしてのガベージ値である必要があります。変更されます。
誰かがこれで私を助けることができますか?助けてください !!