还剩2页未读,继续阅读
文本内容:
网新恒天笔试题目 #include stdio.h#include stdlib.hvoid quizint m{ifm1{quizm/2;quizm/2;}printf*;}int mainvoid{quiz5;systempause;return0;}请问输出几个*???(多次递归,*******7个)面试题目
一、费波纳茨数列的非递归表示(类似于求最大公约数的辗转相除法)int fintn//求第n个费波纳茨数{int a=1,b=1,c,i;fori=3;i=n;i++{c=a+b;a=b;b=c;}return c;}int gcdintm,intn//求最大公约数{int r;whiler=m%n{m=n;n=r;}return n;}
二、变量的存储位置intm;int mainvoid{int k;static intp;char*s=char*malloc2;return0;}上述4个变量的存放位置在哪里?其默认输出值是多少??答案全局变量m与静态变量p存放的位置是一样的,共同占用同一块内存区,都在全局/静态存储区注意全局变量和静态变量如果没有手工初始化,则有编译器初始化为0,局部变量的值不可知,是随机的(m、p的默认输出值为0)局部变量k是在需要的时候申请的,存放位置在栈上,由于局部变量没有初始化,其默认输出值是一个随机值char*s=char*malloc2;这条短短的语句包含了堆与栈,看到new,我们首先就应该想到,我们分配了一块堆内存,那么指针s呢?它分配的是一块栈内存,所以这句话的意思就是在栈内存中存放了一个指向一块堆内存的指针s在程序运行中,会首先确定在堆中分配内存的大小,然后调用ope ratornew分配内存,然会返回这块地址的首地址,放入栈中在C++中,内存分成了5个区,它们分别是全局/静态存储区、堆、栈、自由存储区和常量存储区全局/静态存储区被分配到了同一块内存区中栈就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区,里面的变量通常是局部变量、函数参数等...。