C语言面试技术问题

张开发
2026/5/3 0:08:04 15 分钟阅读
C语言面试技术问题
变量的声明和定义有什么区别定义就是为变量分配地址和存储空间而声明不分配地址所以变量的定义可以在文件外或者文件的后面。什么是内存泄露如何防止内存泄漏程序性能下降会变得极其不稳定也可能会直接崩溃内存泄漏就是指程序在申请内存后没有释放已申请的内存空间。1.为了防止忘记释放从而导致内存泄漏。可以在时申请内存空间的同时 在后面可以用free释放之后之后用回车分开在他们中间进行内存的使用。2.重复申请内存也会使得内存的泄漏就是他还没之前申请的的内存还没释放接着又给他申请一片空间。对于这种的在申请新的内存之前要释放旧内存。3.有静态变量导致的内存泄漏。是静态变量在程序运行的期间不会释放如果静态变持有大量的内存时也会导致内存泄露。为了防止这个情况我们应该尽量避免让静态变量持有大量的内存如果无法避免那就在程序退出时手动释放内存。什么是内存访问越界简单来说你就是向系统申请了一块内存但是你在使用这块内存的时候超出了你申请的范围而导致的。内存越界访问有两种1.读越界就是你读了不属于你的数据如果所读的内存地址是无效的程序就会立马崩溃。如果所读的内存地址是有效的那么在读取的时候没问题但是所读的数据是随机值所产生的后果是无法预料的。2.写越界又叫缓冲区的溢出所写入的也是随机的所产生的后果也是无法预料的。出现段错误的根本原因以及出现的场景有那些段错误核心已转储是指程序在执行的过程中访问了无效地址导致操作系统将程序终止并生成一个核心已转储文件。引起段错误的情况有有四种1.野指针当程序试图去访问一个未初始或者已经释放的指针时会发生这样的错误。2.数组越界当程序试图去访问数组中超出其边界的元素时就会发生这样的错误。3.栈的溢出当程序的递归程度过大或者局部变量占用的栈空间超出系统的限制是会发生这样的错误。4.内存泄漏当程序分配的内存没有得到释放导致内存耗尽时会发生这样的错误。指针常量与常量指针的区别const 靠近谁谁就不能变指针常量(int*const pa)是指定义了一个指针这个指针的值只能在定义时初始化其他地方不能改变。就相当于给一个房间安装了一个门牌号p房间内的装饰能变a可以通过指针修改指向的内容aint* const p - - const 靠近 p指针变量→ 指针本身不能变指针常量常量指针(const int*p)是指定义了一个指针这个指针指向一个只读的对象不能通过常量指针来改变这个对象的值。就相当于给一个房间安装了一个门牌号p房间的门被锁死了不可以通过指针修改指向的内容aconst int* p - - const 靠近 int指针指向的内容→ 指向的内容不能变常量指针。指针常量强调的是指针的不可改变性而常量指针强调的是指针对其所指对象的不可改变性。注意无论是指针常量还是常量指针其最大的用途就是作为函数的形式参数保证实参在被调用函数中的不可改变特性。数组指针与指针数组的区别区分这两个概念要把这两个概念分成两个部分限定修饰词和主体前面的词是限定词后面的词是主体主体就是标识符自身的类型限定词就是存放的数据对于指针数组来说指针是限定词数组是主体对于数组指针来说数组是限定词指针是主体指针数组说明这个标识符是一个数组这个数组的存放的数据是指针数据数组指针说明这个标识符是一个指针这个指针的存放的数据(或者说是指向的)是一个数组函数指针与指针函数的区别函数指针指向工具的地址标签函数指针是指向函数的指针变量函数指针的声明方式为类型 (*指针名)(参数)。- - 本质上是一个指针变量指针函数返回地址的工具指针函数是一个返回指针的函数。指针函数的声明方式为类型* 函数名(参数)。 - - 本质上是还是一个函数函数指针用于指向函数的地址并调用相应的函数而指针函数是返回指针的函数用于动态分配内存或创建对象。回调函数机制回调函数的概念是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数当这个指针被用来调用其所指向的函数时我们就说这是回调函数。在C语言中回调函数是一种非常有用的机制它允许一个函数作为参数传递给另一个函数并在需要时被调用。这种机制在事件处理异步编程驱动程序开发等多个领域都有广泛的应用。回调函数的优缺点优点1。提高代码的复用性和灵活性回调函数可以将一个函数作为参数传递给另一个函数从而实现模块化编程提高代码的复用性和灵活性。2。解耦合回调函数可以将不同模块之间的关系解耦使得代码更易于维护和扩展。3。可以异步执行回调函数可以在异步操作完成后皮执行这样避免了阻塞线程提高应用程序的效率。缺点1。回调函数嵌套过多会导致代码难以维护如果回调函数嵌套层数过多代码会变得非常复杂难以维护。2。回调函数容易造成竞态条件如果回调函数中有共享资源访问容易出现竞态条件导致程序出错。3。代码可读性差回调函数的使用可能会破坏码的结构和可读性尤其是在处理大量数据时。

更多文章