C语言面试题目汇总(持续更新)

Posted ralap7

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言面试题目汇总(持续更新)相关的知识,希望对你有一定的参考价值。

1、堆栈溢出一般是由什么原因导致的?

 这个问题感觉分开来讨论比较好。

首先说栈溢出:

(1)我们都知道局部变量存在栈中,要是在局部变量中存储了一个很大的数组,有可能导致栈溢出。

(2)还有就是函数的参数也是存在栈里面,传递参数时尽量使用指针,要是一粗心将一个很大的数组作为参数传入,就有可能导致栈溢出。

(3)函数的调用层次太深,最坏的情况是无限递归调用。函数递归调用时,系统要在栈中不断保存函数调用时的现场和变量,要是调用层次太深,也可能出现栈溢出。

再谈谈堆溢出:

C不像python这种高级语言,C没有垃圾资源自动回收机制,堆也不像栈那样,由编译器自动分配和释放,堆是手动分配释放的。如果动态申请空间后不及时释放,这种情况可能会导致堆溢出。

2、指针和引用的区别与联系?

int x = 20;

int &b = a;(等价于int * const b = &a)

相同点:

可以说引用相当于指针,引用和指针在编译时的方法一样,指向的都是变量的内存地址。

不同点:

(1)引用存储的是变量值,而指针是指向一个变量,存储的是地址

(2)引用必须被初始化,也就是只能对已经存在的变量或对象实现引用,而指针不需要,指针可以为空

(3)引用不需要分配单独的内存空间,他是直接访问变量;指针是间接访问,需要单独分配内存空间。

 

以上是关于C语言面试题目汇总(持续更新)的主要内容,如果未能解决你的问题,请参考以下文章

HTML面试题汇总(持续更新)

LeetCode题解分类汇总(包括剑指Offer和程序员面试金典,持续更新)

自动驾驶面试题汇总(2022秋招题库)—— 持续更新

自动驾驶面试题汇总(2022秋招题库)—— 持续更新

自动驾驶面试题汇总(2022秋招题库)—— 持续更新

[C/C++][面试]面试题目汇总