#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的值应该是一些垃圾值作为堆栈被改变。
任何人都可以帮助我吗?请帮忙 !!