我是教C语言的老师。还是我来解释一下吧。
建议你把B数组的2个数用16进制初始化,以及main函数中打印采用16进制来打印。
returnA函数返回后,returnB函数占用的内存刚好是returnA函数使用过的内存,所以b数组与A函数中的a内存重叠。
所以main中 *a的值在returnB中被改写。
还有一种比较极端的情况。returnA函数返回后,释放掉的内存回到系统,又被其他进程拿去用,本进程重新调度时,看到的值仍然发生了改变。这种情况概率要低一些。
本题主要是考察函数调用栈和局部变量的关系