中易网

c语言关于变量储存和释放的问题?

答案:3  悬赏:0  
解决时间 2021-04-27 05:27
  • 提问者网友:枫涩帘淞幕雨
  • 2021-04-26 23:52
有两个程序,两个程序运行的结果都是相同的:都是输出3

#include

void shuchu(int*p)
{
printf("%d\n",*p);
}

int main()
{
int a=3;
shuchu(&a);
}
这第一个程序,我听说,主函数定义的变量要等到主函数执行完才释放,既执行到shuru函数时候,a的依旧没有释放,所以,在shuru函数里面可以输出a的值?这样想对吗?
—————————————————————————————————————————————
#include

int* shuchu()
{
int a=3;
return &a;
}

int main()
{ int *b;
b=shuchu();
printf("%d\n",*b);
}
但第二个函数,我从shuru函数定义的变量a,到主函数时候,a不会释放吗?为什么还能通过指针输出a的值??
最佳答案
  • 二级知识专家网友:有钳、任性
  • 2021-04-27 00:59
第一个理解没问题,第二个你把a的地址赋给了b,也就是有两个指针都指向这个地址,释放是地址,这个地址能被其他变量使用,下面的程序没有变量使用这个地址,所以里面的内容没有消失,所以通过b还是能取出b所指向地址里的内容
全部回答
  • 1楼网友:一池湖水
  • 2021-04-27 02:02
如果你程序再次用到栈的话,将会覆盖该数据,请自行做以下实验 #include int* shuchu() { int a=3; return &a; } void dosth(const char * str) {     printf("%s\n",str); } int main() { int *b; b=shuchu(); dosth("hello"); printf("%d\n",*b); }
  • 2楼网友:开心就好
  • 2021-04-27 01:26
你可以修改一下, #include int main(void) { double num1,num2; printf("请输入变量1与产量2的值:%d",&num1,&num2); printf("变量1的值为:%d ,变量2的值为:%d ",num1,num2); return 0; }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息