本文主要是介绍C++面试常见问题总结(四)(本人面试遇到的问题记录,作为学习和交流用),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、函数调用的整个执行过程是什么?
首先这里的函数不包含内联函数,因为内联函数是类似于宏定义的一种展开方式。这里的函数指普通的成员函数,在出现函数调用时,首先会将函数下一条调用语句的地址保存到栈中,然后将函数参数从右向左依次压栈,跳转到函数体处;如果函数体中定义了变量,将变量压栈,将每一个形参以栈中对应的实参值取代,执行函数体的功能体;将函数体中的变量、保存到栈中的实参值,依次从栈中取出,释放栈空间(出栈)。返回过程执行的是函数体中的return语句。其过程是从栈中取出刚开始调用函数时压入的地址,跳转到函数的下一条语句。当return语句不带有表达式时,按照保存的地址返回,当return语句带有表达式时,将计算出的return表达式的值保存起来,然后再返回。
2、指针与引用的区别
指针是定义了一个变量来存储一块内存的地址,通过这个地址来操作对应的内存。
指针可以指向不同的内存地址。
指针可以为空
引用是内存的别名,
引用不可以为空
3、函数重载的原理
C语言中对函数的编译时只会将函数名简单的标记下,写入符号库中,每次调用时会在符号库中找函数名。但是C++中的函数则是在符号库中将函数名和参数类型也记录到符号表中,这样就实现了重载。
4、栈与堆的区别,栈为什么快?
栈是机器系统提供的数据结构,计算机会在底层对栈提供支持,分配
这篇关于C++面试常见问题总结(四)(本人面试遇到的问题记录,作为学习和交流用)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!