nice公司的一道笔试题讲解

Posted 小赵小赵福星高照~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nice公司的一道笔试题讲解相关的知识,希望对你有一定的参考价值。

nice公司的一道笔试题讲解

#include <stdio.h>
int main()
{
    int i = 0;
    int arr[] = {1,2,3,4,5,6,7,8,9,10};
    for(i=0; i<=12; i++)
    {
        arr[i] = 0;
        printf("haha\\n");
    }
    return 0;
}

这段代码的运行结果是什么呢?

image-20210514185731165

运行后会进入死循环打印haha,数组明明越界了,为什么不报错呢?是因为它陷进了死循环,停不下来,所以不会报错。

image-20210526102023072

我们进行调试,调试后发现arr[12]恰好就是i,改变arr[12]时也改变i,所以进行了死循环。

原因如图解释所示:

image-20210514161326828

总结:

1.i和arr是局部变量,局部变量是放在栈区上的
2.栈区的使用习惯是:先使用高地址空间,再使用低地址

以上是关于nice公司的一道笔试题讲解的主要内容,如果未能解决你的问题,请参考以下文章

一道有意思的笔试题

一道简单的 Java 笔试题,但值得很多人反思

《每日一套题·提升你我能力》· 第一篇

微软公司笔试题_附上源码解决

JavaScript笔试题(js高级代码片段)

一道笔试题引发的对Object.creat()的思考