当前位置: 首页 > news >正文

C语言测试五

  1. windows是什么类型的系统(实时还是分时)?有什么区别?

    分时操作系统。如果在单核的情况下,分时操作系统多个进程共用一个单核,该单核会将其执行时间分成相应的时间片,每个进程占用一定的时间片,时间片过后则跳转至下一个进程的时间片。而实时操作系统如果在单核的情况下,一个进程能独享该单核。

  2. 描述每种结构体(struct、enum、union)的区别?

    struct变量依次存储,且结构体大小为内部最大成员的整数倍,不足需要补齐(内存对齐,具体内容可参照:https://blog.csdn.net/u011573853/article/details/49967923。
    union变量每次只有一个成员存放于某个地址。联合体大小为内部最大成员的大小。
    enum大小为int数据类型的大小。将一个字符串和一个整型值联系起来。

  3. 数组和指针的区别?多维指针和多维数组的区别?多维指针可以直接操作多维数组吗?

    • 数组名取地址得到的是数组名所指元素的地址,而对指针取地址得到的是指针变量自身的地址

    • 数组名代表了一个指向数组首元素的指针常量,一经定义不可更改,数组名类型与数组元素类型相同;指针是指针变量,定义后仍可以更改,其类型在定义时确定

    • 当出现sizeof和&操作符时,数组名不再当成指向一个元素的指针常量使用,而指针仍可当成指向一个元素的指针变量

  4. 堆栈溢出一般什么原因

    • 函数调用层次太深。
    • 动态申请的空间使用之后没有释放。
    • 数组访问越界。
    • 指针非法访问。
  5. 计算机中是如何存储小数的?

    采用科学计数法存储

  6. C中函数是如何入栈的?

    从右往左的入栈顺序,最后压入函数名

  7. 进程和线程有什么区别?

    • 根本区别:进程是操作系统进行资源分配的最小单元,线程是操作系统进行运算调度的最小单元

    • 进程中包含了线程,线程属于进程

    • 进程的创建、销毁和切换开销都远大于线程

    • 每个进程都有自己的内存和资源,一个进程中的线程会共享这些内存和资源

    • 子进程无法影响父进程,而子线程可以影响父线程,如主线程发生异常会影响所在进程和子线程

    • 进程CPU利用率较低,因为上下文切换开销较大,线程CPU利用率较高,上下文切换速度快

    • 进程的操纵者一般是操作系统,线程的操纵者一般是编程人员

  8. exe、lib、dll的区别?它们的关系是什么?

    具体参照:https://blog.csdn.net/kason2011/article/details/7467372

    • lib 是编译时需要的文件,dll是让动态链接的程序所需的。lib文件是在编译期连接到应用程序的,而dll文件是运行期才会被调用的。如果有dll文件,那么对应的lib文件一般是一些索引信息,具体的实现在dll文件中。

    • 如果只有lib文件,那么这个lib文件时静态编译出来的,索引和实现都在其中。静态编译的lib文件有好处:给用户安装的时候就不需要挂载动态库dll。但也有缺点,就是导致应用程序比较大,而且失去了动态库的灵活性,在版本升级时,同时要发布新的应用程序才行。

    • 在动态库的情况下,有两个文件,一个是引入库lib文件,一个是dll文件,引入库文件包含被dll文件导出的函数的名称和位置,dll文件包含实际的函数和数据,应用程序使用lib文件链接到所需要使用的dll文件,库中的函数和数据并不复制到可执行文件中,因此在应用程序的可执行文件中,存放的不是被调用的函数代码,而是dll文件中所要调用的函数的内存地址,这样当一个或多个应用程序运行是把程序代码和被调用的函数代码链接起来,从而节省了内存资源。从上面的说明可以看出,dll文件和lib文件必须随应用程序一起发行,否则应用程序将会产生错误。

    • exe文件是Windows平台下的应用程序,exe可以只需要dll文件,而不必有lib和dll头文件。

  9. 详细描述编译连接的过程

    源代码->预编译->编译->链接->可执行文件->执行

  10. 使用malloc申请200字节,调用free后,操作系统是如何知道需要释放200个字节的?

    因为malloc时会多申请4个字节,用于标记申请了多少个字节。

    长度标记 | 申请的内存空间|

    4 | 200 |

    而返回的仅仅只是申请的内存空间的地址。

  11. memcpy有什么问题?该如何解决?

    内存重叠。使用memmove或者手写处理。

  12. 完备功能的函数

    即要处理输入参数(使用if过滤),不能让程序崩溃。

  13. 判断当前编译环境是32位还是64位。

    • 方式一:使用关键字sizeof(int*)

    • 方式二:使用int**(二级指针)的偏移来确定,int**的偏移量是int*的字节大小。

http://www.lryc.cn/news/43874.html

相关文章:

  • 【微服务~原始真解】Spring Cloud —— 访问数据库整合Druid数据源
  • 前端入门必刷题,经典算法—两数之和
  • ‘海外/国外‘地区微博签到shu据(正题在第二部分)
  • Springboot——SB整合Mybatis的CURD(基于注解进行开发)
  • 现在大专生转IT可行吗?
  • XC7A50T-1CSG324I、XC7A50T-2CSG324I Artix-7 FPGA可编程门阵列
  • linux安装图片处理软件ImageMagick
  • 【Java基础】JavaCore核心-反射技术
  • AWGN后验估计下的均值与协方差关系(向量和标量形式)
  • Linux常用命令之文件搜索命令
  • ChatGPT给软件测试行业带来的可能
  • Cadence Allegro 导出Properties on Nets Report报告详解
  • JAVA代码 实现定位数据动态聚集并绘制多边形区域
  • 基于储能进行调峰和频率调节研究【超线性增益的联合优化】(Matlab代码实现)
  • 体验 Linux 的几个监控命令(htop、nmon、netdata)
  • NOC大赛2022NOC软件创意编程初赛图形化小低组(小学高年级组)
  • python进行股票收益率计算和风险控制的实现
  • 自从有了这套近4000页的开发文档后,Java面试路上就像开了挂一样
  • Python文件操作
  • 036:cesium加载GPX文件,显示图形
  • 【AI探索】我问了ChatGPT几个终极问题
  • Leetcode 优先队列详解
  • 通过两道一年级数学题反思自己
  • Pytorch :从零搭建一个神经网络
  • 【华为OD机试 2023最新 】 区块链文件转储系统(C++ 100%)
  • 基于springcloud实现分布式架构网上商城演示【项目源码】分享
  • 【Qt】(自制类)适用于QTextCharFormat的字体选择对话框
  • Unity即时战略/塔防项目实战(一)——构造网格建造系统
  • 【ZOJ 1095】Humble Numbers 题解(动态规划)
  • 百科媒体背书,什么媒体的收录可以修改百科?