笔试题:以下程序为什么出现死循环?

来源:百度知道 编辑:UC知道 时间:2024/06/08 22:45:36
#include<iostream.h>
void loop();
void addr();
main()
{
addr();
loop();
}

long *p; //第十行
void loop()
{
long i,j;
j=0;
for(i=0;i<10;i++)
{
(*p)--;
j++;
}
}

void addr()
{
long k; //第二十四行
k=0;
p=&k;
}

把第十行改为short *p;第二十四行改为short k;之后,为什么程序又只执行一次??请高手解答,不胜感谢...

你这个程序有大问题
你在addr函数中定义k,这是个局部变量,函数执行完了,变量就不存在了,内存也会还给操作系统
但是你把地址赋值给p,还在loop中取他的值,这就不知道会发生什么了
你可以在两个函数中分别把p的值打印出来看看,自己调试一下多用printf