这是一个面试问题,但我不知道该怎么做。
假设我们在函数中声明了一个局部静态变量。面试官问我没有调用该功能,是否可以修改它?我不知道怎么。但我想我们可能会以某种方式获取本地静态变量的地址?
答案 0 :(得分:3)
允许返回指向具有静态存储的对象的指针,例如
#include <stdio.h>
int *foo(void) {
static int x;
printf("%d\n", x);
return &x;
}
int main(void) {
int *p = foo();
*p = 10;
foo();
return 0;
}
将打印:
0
10
或者,您当然可以将指针传递给指针并将其存储在那里而不是返回它。
答案 1 :(得分:1)
我认为这是一个很好的面试问题,但稍微倾向于将你的答案偏向于错误的答案。
你提出问题的方式,可能会让你思考“我怎样才能克服这种语言限制?”
我的回答是。 “静态局部的目的是控制范围。如果我们需要更广泛的范围,应该正确定义变量。”换句话说,我的答案是不这样做。
您回答的方式是衡量环境适应性的有效方法。在现有设计中面对障碍时你会做什么:破解它或修复它?
可能有助于使我的观点清晰的一些细化:
你在休息室,面试官问“看到糖果自动贩卖机 - 是否有可能在没有钱的情况下取出糖果?”你的思绪开始旋转“如果我使用咖啡搅拌器,我可能会......”第二天,你还在研究如何将糖果从机器中取出。
另一位采访者可能会问同样的问题“你如何从糖果机中取出糖果?”你说“把钱放进去”
这是关于你如何处理现有界面的同一个问题,但是有人会误导你。