69,373
社区成员
发帖
与我相关
我的任务
分享
int *name()
{
int *s=5;
return s;
}
main()
{
int *a=name();
printf("%d\n",s);
}
int *name()
{
int *s=5;
return s;
}
main()
{
int *a=name();
printf("%d\n", a);
}
然后,讨论这个问题;
name函数中,s是指针,将5赋值给s就是,s指针变量里存放的值是5,即s指针指向内存单元中地址为5单元(可能是虚拟地址)。然后将s返回(返回的是s内存单元里的值5)。main函数中将该值又赋值给变量a,然后输出变量a的值。这样没什么问题。跟栈有关系的就是变量s, a但是return返回的是值。int *name()
{
int *s=5; //这行会报错,等式左右两边类型不符
return s;
}
main()
{
int *a=name();
printf("%d\n",s); //这行会报错,s在main函数中没有定义。
}
代码是有问题的,不知道是不是粘贴错了,请再检查一下。