面试题目1

ops/2025/1/22 12:59:05/

文章目录

    • C语言函数调用详细过程
    • C语言中const与C++中const的区别
    • 关系运算符有哪些
    • 互斥锁与读写锁的区别
    • gcc的编译过程

C语言函数调用详细过程

  • 调用函数:当程序执行到函数调用语句时,会将当前函数的返回地址、参数列表等信息压入栈中,然后跳转到被调用函数的入口处执行
  • 进入函数:被调用函数在执行前需要进行一些初始化操作,比如保存现场、分配内存等。这些操作都是在被调用函数的栈帧中完成的
  • 执行函数:被调用函数开始执行代码,执行过程中可以访问传递进来的参数和局部变量。如果被调用函数也调用了其他函数,那么会再次进行函数调用,形成函数调用链
  • 返回函数:当被调用函数执行完毕后,会将返回值和一些其他信息压入栈中,然后跳转回调用函数的地址处,继续执行调用函数的代码
  • 恢复现场:调用函数在返回前需要进行一些清理工作,比如恢复现场、释放内存等。这些操作都是在调用函数的栈帧中完成的
  • 返回结果:调用函数在执行完被调用函数后,会从栈中获取返回值,并继续执行剩余的代码

C语言中const与C++中const的区别

C语言中的const:

​ 1.const修饰的变量是只读的,本质还是变量

​ 2.const 修饰的局部变量在栈上分配空间

​ 3.const修饰的全局变量在只读存储区分配空间

​ 4.const只在编译期有用,在运行期无用

​ 5.C语言中的const使得变量具有只读属性

​ 6.const将具有全局生命周期的变量存储于只读存储区

​ 7.const修饰的变量不是真的常量,它只是告诉编译器该变量不能出现在赋值符号的左边

C++在C的基础上对const进行了进化处理:

​ 1.const声明变量时在符号表中放入常量

​ 2.编译过程中若发现使用常量则直接以符号表中的值替换

​ 3.编译过程中若发现下述情况则给对应的常量分配存储空间

​ (1)对const常量使用了extern

​ (2)对const常量使用&操作符

​ 4.C++编译器虽然可能为const常量分配空间,但不会使用其存储空间中的值

关系运算符有哪些

​ 等于运算符(==),不等于运算符(!=), 大于运算符(>), 小于运算符(<),大于或等于运算符(>=),小于或等于运算符(<=)

互斥锁与读写锁的区别

​ 互斥锁是一种独占锁,它确保在同一时间只有一个线程可以持有锁。这意味着,当使用互斥锁时,其他线程必须等待直到锁被释放才能继续执行。互斥锁适用于需要确保共享资源在任一时刻只被单个线程访问的情况,例如当共享资源的修改可能导致数据竞争和不一致性时

​ 读写锁允许对共享资源的并发访问,具体取决于访问的类型(读或写)。允许多个线程同时进行读操作,但同一时间只允许一个线程进行写操作。读写锁适用于读操作频繁且写操作较少的场景,因为它们可以提高并发性能,允许多个线程同时读取共享资源,而不会相互阻塞。但是,读写锁在处理频繁写操作时可能会影响性能,因为写锁的获取可能会导致其他线程长时间等待

gcc的编译过程

预处理——编译——汇编——链接


http://www.ppmy.cn/ops/152193.html

相关文章

5、艰难的选择

“ 你好&#xff0c;我想让身体变得更健康一些。怎么办&#xff1f; ” “ 每天慢跑 8 公里。 ” “ 太麻烦了&#xff01;算了&#xff0c;以后再说吧。 ” …… “大夫你好&#xff0c;这病花多少钱都无所谓&#xff01;只要能治好&#xff0c;倾家荡产都 行。 ” 多数组…

软件测试—— 接口测试(HTTP和HTTPS)

软件测试—— 接口测试&#xff08;HTTP和HTTPS&#xff09; HTTP请求方法GET特点使用场景URL结构URL组成部分URL编码总结 POST特点使用场景请求结构示例 请求标头和响应标头请求标头&#xff08;Request Headers&#xff09;示例请求标头 响应标头&#xff08;Response Header…

图的基本概念

一、图 二、顶点的度 三、图的同构 ​​​​​​​​​​​ 四、完全图 五、子图 六、补图

什么是三高架构?

大家好&#xff0c;我是锋哥。今天分享关于【什么是三高架构?】面试题。希望对大家有帮助&#xff1b; 什么是三高架构? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 “三高架构”通常是指高可用性&#xff08;High Availability&#xff09;、高性能&#xff…

CC工具箱使用指南:【Excel点集转面要素(批量)】

一、简介 群友定制工具。 此工具的功能是将一系列Excel文件转成面要素。 假设文件夹下有许多Excel文件&#xff1a; Excel文件长这样&#xff1a; 工具取x,y列&#xff0c;转成点集并生成面要素&#xff0c;同时将Excel文件名作为一个字段保存下来。 二、工具参数介绍 点击…

Python运算符

1、算术运算符 加 减— 乘* 除/ 整除// 取余% 幂运算** 优先级&#xff1a; 第1级&#xff1a;** 第2级&#xff1a;* &#xff0c; / &#xff0c; % &#xff0c;// 第3级&#xff1b; &#xff0c; - print("加", 1 4) print("减",8 - 19) p…

uboot,s5pv210 , lowlevel_init.s 分析

这是 三星的外围设备&#xff0c;在Board 目录下。 文件是 &#xff1a;board/samsung/goni/lowlevel_init.S 首先是这段代码。 14 _TEXT_BASE:13 .word CONFIG_SYS_TEXT_BASE1211 .globl lowlevel_init这里的  CONFIG_SYS_TEXT_BASE  这是 在 文件 board/s…

app版本控制java后端接口版本管理

java api version 版本控制 java接口版本管理 1 自定义 AppVersionHandleMapping 自定义AppVersionHandleMapping实现RequestMappingHandlerMapping里面的方法 public class AppVersionHandleMapping extends RequestMappingHandlerMapping {Overrideprotected RequestCondit…