笔试题堆和栈

时间:2020-10-20 11:12:09 笔试题目 我要投稿

笔试题(堆和栈)

解释局部变量、全局变量和静态变量的含义。
   局部变量包括函数的形参,包含在函数体或者语句块内的变量,局部变量的生存期在退出函数或语句块后结束。全局变量是指在所有函数和语句块之外的变量,它对于整个程序均可见,全局变量的生存期与程序的生存期相同.
   静态变量指由关键字static声明的变量,它的作用域和其他变量一样,由它所在的位置决定,如在函数体或语句块中声明,则只在函数体或语句块可见,其他地方均不可见.它的生存期与程序相同.

笔试题(堆和栈)

解释堆和栈的区别。
简述如下:
栈上分配的内存,由系统自动分配,系统会自动收回.如果需要动态分配内存,则只能通过malloc/new在堆上分配的内存,使用完毕后,通过free/delete来释放内存。5.论述含参数的宏与函数的优缺点。含参数的宏优点:省去了函数调用的开销,运行效率高.含参数的`缺点:由于宏本质上是字符串的替换,所有可能会由于一些参数的副作用导致得出错误的结果.
如:
#define max(a, b)    ( ((a) > (b)) ? (a) : (b) )
如果程序中出现这样的调用: max(a++, b);将导致a被计算2次,从而可能得到错误的结果,而函数调用不会出现这种问题.另外,如果程序中有多次宏替换的话,可能导致代码体积变大.函数的优点是:没有带参数宏可能导致的副作用,计算的正确性较宏更有保证.
函数调用的缺点:函数调用需要一些参数,返回地址等入栈,出栈的开销,效率没有宏函数高.
 

【笔试题(堆和栈)】相关文章:

关于Java堆、栈和常量池的介绍10-05

360笔试题目07-11

华为2017笔试题08-16

华为面试题:怎样判断栈的增长方向09-03

华为2017笔试试题08-10

桂林银行笔试题笔经10-21

堆的javascript实现方法11-22

不同美甲笔的保养和清洗方法10-07

硬笔书法和软笔书法的差别09-24

集装箱免柜租和免堆是什么意思08-19