clrscr后发生了什么?以下代码段的输出是什么?
#include<stdio.h>
#include<conio.h>
int *call();
void main()
{
int *ptr;
ptr=call();
clrscr();
printf("%d",*ptr);
getch();
}
int*call()
{
int a=25;
a++;
return &a;
}
output:
-10
代码是这样工作的: call()
被调用时,A = 25,则a = 26。让地址为65518.该地址返回到ptr。因为返回类型是int,而不是65518,(由于循环属性)返回-18。 so ptr = & a = -18。然后clrscr清除它....但如何*ptr
被打印为输出?我的意思是地址不能是负数(-18)。
这是未定义的行为,任何事情都可能发生,26,30,世界末日等 –
这意味着-18作为地址是允许的? – user3018725
@ user3018725您不打印地址,而是打印地址的内容。 – Barmar