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; }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息