由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 关于判断stack grows up or down那道题
相关主题
再请教个:C变长参数的传递问题C++ 面试题疑问
请问一个关于递归算法的问题。问个基础题,大家不要笑我
bloomberg onsite报面经求bless汗,不问算法
Arista Networks面经2螺旋打印matrix
C++ 题目请问以下程序运行结果
分享A公司面经负数移位是怎么搞的阿
问一个C的简单问题给大家看几道C 小程序
请教一道c/c++题 (转载)一道小题
相关话题的讨论汇总
话题: stack话题: grows话题: 函数话题: int话题: down
进入JobHunting版参与讨论
1 (共1页)
P*******b
发帖数: 1001
1
为什么要定义一个函数呢?
为啥不能直接用两个local变量比较地址?
thanks
t******e
发帖数: 1293
2
两个local变量不一定准确
int a, b;
可能a在b之前,也可能b在a之前的。还是定义子函数的好。
因为每个函数都会在栈上有一个frame
这些frames都是在栈顶上涨的,所以,用这个来判断栈的生长方向是最准确的。

【在 P*******b 的大作中提到】
: 为什么要定义一个函数呢?
: 为啥不能直接用两个local变量比较地址?
: thanks

P*******b
发帖数: 1001
3
thanks!
两个变量为什么不准确呢?
是因为他们初始化的顺序undefined吗?

【在 t******e 的大作中提到】
: 两个local变量不一定准确
: int a, b;
: 可能a在b之前,也可能b在a之前的。还是定义子函数的好。
: 因为每个函数都会在栈上有一个frame
: 这些frames都是在栈顶上涨的,所以,用这个来判断栈的生长方向是最准确的。

I*********g
发帖数: 93
4
可能编译器对这个behavior是 undefined的吧。不一定按顺序放,编译器可能做点优化
什么的
d********e
发帖数: 132
5
Here is a solution I found:
#include
void sub(int *a) {
int b;
if (&b > a) {
printf("Stack grows up.");
} else {
printf("Stack grows down.");
}
}
main () {
int a;
sub(&a);
}
P*******b
发帖数: 1001
6
只能这么理解了。但是还是不确定。

【在 I*********g 的大作中提到】
: 可能编译器对这个behavior是 undefined的吧。不一定按顺序放,编译器可能做点优化
: 什么的

a****n
发帖数: 1887
7
这个stack 是指函数调用的堆栈, 当然需要用函数确定了
这个题本身就是问被调函数和主调函数的栈的顺序
每一个frame里面放的都是当前的函数需要的局部变量和环境参数,具体一个函数内的
局部变量的顺序编译器相关
1 (共1页)
进入JobHunting版参与讨论
相关主题
一道小题C++ 题目
白板代码,支持O(1)时间GetMin的stack分享A公司面经
问几道面试中遇到的C++问题问一个C的简单问题
问道C内存的题?请教一道c/c++题 (转载)
再请教个:C变长参数的传递问题C++ 面试题疑问
请问一个关于递归算法的问题。问个基础题,大家不要笑我
bloomberg onsite报面经求bless汗,不问算法
Arista Networks面经2螺旋打印matrix
相关话题的讨论汇总
话题: stack话题: grows话题: 函数话题: int话题: down