C语言——八股文(笔试面试题)

 1、 什么是数组指针,什么是指针数组?

数组指针:指向数组的指针
指针数组:数组中的元素都是指针

 2、 什么是位段,什么是联合体

   位段(Bit Field):在C语言中,允许在一个整数类型的数据结构中定义若干个长度为任意比特位的字段。
   联合体(Union):允许多种数据类型的变量共用同一块内存区域。

3、 什么是递归,什么是回调?

   递归:函数直接或间接地调用自身的过程。
   回调:一个函数作为参数传递给另一个函数,并由后者在适当的时候调用前者。

4、 什么是越界,什么是溢出?

   越界:访问超出数组或其他容器范围的元素。
   溢出:数值超过了其表示范围的最大值或最小值。

5、#define和typedef的区别?

#define:宏定义,用于创建常量、替换字符串等。

 typedef:类型别名,用于创建新的类型名称。

6、 Static与extern的作用?

   static:限制变量或函数的作用域。
   extern:声明外部链接性,可以在其他文件中使用该变量或函数。

7、 二级指针和二维数组有什么关系?

二级指针可以用来操作二维数组。例如,
int** ptr = (int**)malloc(sizeof(int*) * rows);`

8、 栈内存,堆内存,数据区有啥区别?

   栈内存:自动分配和释放,存储局部变量和函数调用信息。
   堆内存:动态分配和释放,通过new/malloc申请,delete/free释放。
   数据区:静态分配,存储全局变量和静态变量。

9、 负数及浮点型数据在内存中是如何存放的?

   负数通常采用补码形式存储。
   浮点数按照IEEE 754标准存储,分为符号位、指数位和尾数位。
    [负数及浮点型数据在内存中是如何存放的博文参考链接]

10、 如何在代码中打印所在文件名,函数名及行号?

使用预处理器宏__FILE__、__FUNCTION__和__LINE__。__FILE____func____LINE__eg: printf("%s-%s-%d\n", __FILE__,__func__,__LINE__);

 

11、 局部变量能否和全局变量重名?

可以,但局部变量会屏蔽同名的全局变量。

12、 如何引用一个已经定义过的全局变量?

直接使用变量名即可。

13、 全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?

不建议这样做,因为会导致链接错误。应该在某个.C文件中定义,在头文件中声明。

14、 static全局变量与普通的全局变量有什么区别?static函数与普通函数有什么区别?

    static全局变量只在当前文件内有效。

​    static局部变量在整个程序运行期间都存在。


​    static函数只能在当前文件内部调用。

15、 写出float x 与“零值”比较的if语句。

// if (fabs(x) < FLT_EPSILON)    if ( x > 0.000001 && x < -0.000001)

16、 Struct与union的区别?

Struct:成员按顺序依次排列,每个成员有自己的空间。
Union:所有成员共享同一块内存空间。

17、 关键字volatile有什么含义?并给出三个不同的例子

volatile:指示编译器不要对变量进行优化,确保每次读写都是实际的硬件操作。

示例:

​      1. 外部设备寄存器
​      2. 共享内存
​      3. 实时系统中的信号

18、 C语言程序代码优化方法

- 减少不必要的计算
- 避免重复计算
- 使用更高效的数据结构
- 合理利用缓存

19、 物理地址,虚拟地址,逻辑地址和总线地址的区别

- 物理地址:内存的实际地址。
- 虚拟地址:操作系统提供的抽象地址。
- 逻辑地址:汇编语言中的地址。
- 总线地址:计算机总线上使用的地址。

20、 关键字const有什么含意

- const:声明变量或对象不可修改。

21、malloc(0) 的意义

在C语言中,malloc函数用于动态分配内存。
     根据C标准,malloc(0)的行为可能因编译器和系统而异。针对malloc(0)的调用, 可能会返回以下两种结果之一:
    1.返回一个非空指针:在这种情况下,该指针不能用于访问任何内存,但可以被传递给free函数以释放该块内存。这意味着malloc(0)返回的指针和正常返回的指针具有相同的属性,即你可以将其传递给free(而不会引|发错误。
    2.返回.NULL指针:在这种情况下,malloc(0)表示动态内存分配失败。此时,你需要检查返回的指针是否为NULL,以确保在使用该指针之前不会出现问题。

#include <stdio. h>
#include <stdlib. h>int main()                                                                                   { void *ptr-=mal1oc(0) ;if (ptr==NULL) {printf (' Memory allocation failed. \n' ); }else { printf(' Memoryallocation successed. \n'); //释放内存free(ptr); }return 0;
}

为了确保代码在不同的编译器和系统上正确运行,请始终检查malloc的返回值,而不是假定其
行为。这样,即使在malloc(0)返回非空指针或NULL指针的情况下,代码仍将正确运行。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/57619.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

制作一个简易恒流电子负载教程,实战教程,单片机程序,电路图,方案

师从&#xff1a;https://www.bilibili.com/read/cv4088568/ 题目是这样的&#xff1a; 设计和制作一台恒流&#xff08;CC&#xff09;工作模式的简易直流电子负载。其原理示意图如图1所示。 图1简易直流电子负载原理示意图 二、要求 1.基本要求 &#xff08;1&#xff09;…

日期类数据和控件管理

目录 QTime API QDate API QDateTime QDateTimeEdit API QCalendarWidget API 测试样例&#xff08;参考了《Qt6开发指南》&#xff09; (严肃提示&#xff1a;笔者认为这里的控件没有难点&#xff0c;本篇文章实际上是GPT辅助的代码整理和表格使用&#xff0c;笔者建…

PostgreSQL-06-入门篇-集合运算

文章目录 1. UNION 组合多个查询的结果集简介带有 ORDER BY 子句的 UNION设置样例表PostgreSQL UNION 示例1) 简单的 PostgreSQL UNION 示例2) PostgreSQL UNION ALL 示例3) 带 ORDER BY 子句 UNION ALL 示例 2. INTERSECT 取交集简介带 ORDER BY 子句的 INTERSECT 操作Postgre…

露营投影仪什么牌子好,中科极光A5 Pro Max开启投影新未来

伴随着现代学业工作繁重&#xff0c;人们的时间变得碎片化&#xff0c;对生活轻量化的需求也越来越高。便捷性、便利性、简易性开始成为人们的关注重点。而在简化、便捷的背后&#xff0c;品质是否能跟上成为了商品需要接受的考验。打造一间属于自己的私人小影厅&#xff0c;听…

当我们在微服务中使用API网关时,它是否会成为系统的瓶颈?这种潜在的瓶颈如何评估和解决?如何在微服务架构中保证高效请求流量?|API网关|微服务|异步处理

目录 1. API网关在微服务中的角色与重要性 2. API网关瓶颈的评估 2.1 请求延迟分析 2.2 并发请求量监控 2.3 内存和CPU使用情况 2.4 限流和熔断机制评估 2.5 日志分析 3. API网关瓶颈的解决方案 3.1 缓存机制优化 3.2 负载均衡优化 3.3 异步处理与消息队列 3.4 限流…

【python ASR】win11-从0到1使用funasr实现本地离线音频转文本

文章目录 前言一、前提条件安装环境Python 安装安装依赖,使用工业预训练模型最后安装 - torch1. 安装前查看显卡支持的最高CUDA的版本&#xff0c;以便下载torch 对应的版本的安装包。torch 中的CUDA版本要低于显卡最高的CUDA版本。2. 前往网站下载[Pytorch](https://pytorch.o…

mysql8.0.32升级到8.0.40

上篇8.0.32库的准备&#xff1a;mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No suc-CSDN博客 此篇测试升级到8.0.40 MySQL :: Download MySQL Community Server rootjyc:~# mysql -u root -pabcd1234 mysql: [Warning]…

从此告别图床失效:一个几乎可以代理所有图床的工具!

原项目 Github: https://github.com/webp-sh/webp_server_go 根据此项目制作的脚本工具 一键脚本&#xff1a; curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/webp-server.sh && chmod x webp-server.sh && ./webp-server.sh是的&…

JavaScript语法基础——变量,数据类型,运算符和程序控制语句(小白友好篇,手把手教你学会!)

一、JavaScript概述 JavaScript是一种高级编程语言&#xff0c;常用于网页开发和服务器端应用程序。它是一种动态类型语言&#xff0c;可以在浏览器中直接解释执行&#xff0c;而不需要编译。 脚本&#xff08;Script&#xff09;是一种与计算机程序相关的指令集或代码块&…

Jenkins-配置使用ssh拉取仓库代码,配置自动化构建打包(三)(云效)

文章目录 准备注意&#xff1a;流程&#xff1a; 检查之前是否配置过与代码仓库的连接生成密钥对手动在服务器中与代码仓库建立连接以生成 Known hosts file代码仓库端添加公钥Jenkins System-Publish over SSH中添加私钥Jenkins中创建项目&#xff0c;并使用私钥添加ssh凭据构…

镭眸ILS-F13测量型激光雷达:超远距激光雷达专家

镭眸F13是一款超远距离测量型激光雷达&#xff0c;专为需要在超远距离内实现移动物体轮廓数据测量的用户设计。它能够以25Hz的扫描频率&#xff0c;在120米内提供3厘米的扫描精度&#xff0c;解决了现有传感器无法满足的测量距离问题。与市场上其他产品如西克&#xff08;SICK&…

windows安装deepin双系统

最近入手了一台中柏N100的小主机&#xff0c;本来只想当个机顶盒&#xff0c;没想到性能还可以&#xff0c;就打算用它做一些日常的办公&#xff0c;无聊时想着能不能再装个Linux&#xff0c;就去Deepin官网查看了下方法&#xff0c; 在此记录 另外&#xff0c;欢迎来我的博客…

SAP-FICO 月结流程

一、财务月结 1、资产会计-固定资产折旧计提AFAB 正式运行之前&#xff0c;先测试运行&#xff0c;没有问题就正式运行 可以看到&#xff0c;没有错误 因为正式系统的资产会过于庞大&#xff0c;一般都是后台运行资产的折旧 点击程序--后台执行 AFBP查看运行日志&#xff0c…

深度学习(八) TensorFlow、PyTorch、Keras框架大比拼(8/10)

一、深度学习框架概述 深度学习框架在当今人工智能和机器学习领域中占据着至关重要的地位。其中&#xff0c;TensorFlow 由 Google 开发&#xff0c;自 2015 年发布以来&#xff0c;凭借其灵活的计算图、自动微分功能以及跨平台支持等特点&#xff0c;迅速成为主流深度学习框架…

JVM—类加载器、双亲委派机制

目录 什么是类加载器 类加载器的分类 Bootstrap启动类加载器 通过启动类加载器加载用户jar包 Extension扩展类加载器和Application应用程序类加载器 通过扩展类加载器加载用户jar包 双亲委派机制 打破双亲委派机制 自定义类加载器 线程上下文类加载器 Osgi框架的类加…

flask第一个应用

文章目录 安装一、编程第一步二、引入配置三、代码解析 安装 python环境安装的过程就不重复赘述了&#xff0c;flask安装使用命令pip install Flask即可&#xff0c;使用命令pip show Flask查看flask版本信息 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供…

享元模式-实现大颗粒度对象缓存机制

详解 享元模式是一种结构型设计模式&#xff0c;其主要目的是通过共享尽可能多的相同部分来有效地支持大量细粒度的对象。它通过将对象的属性分为内在属性&#xff08;可以共享、不随环境变化的部分&#xff09;和外在属性&#xff08;根据场景变化、不能共享的部分&#xff0…

Flutter学习笔记(一)-----环境配置

一、android 环境 android这边可以参照godot的配置 1.装java Java Downloads | Oracle x64 Compressed Archive &#xff1a;下载后直接解压到某个位置&#xff0c;不用安装 x64 installer: 下载后双击安装 注意&#xff1a;不要去百度直接搜Java安装&#xff0c;这样你最多安…

JetBrains Clion Idea 等缓存文件和配置文件迁移

JetBrains 缓存文件和配置文件迁移 文件默认路径 缓存文件默认路径&#xff1a; %userprofile%/AppData/Local/JetBrains/应用名 如 C:/Users/wbl/AppData/Local/JetBrains/CLion2021.3日志文件默认路径&#xff1a;默认在配置文件目录下的log文件夹 %userprofile%/AppData…

《AI产品经理手册》——解锁AI时代的商业密钥

在当今这个日新月异的AI时代&#xff0c;每一位产品经理都面临着前所未有的挑战与机遇&#xff0c;唯有紧跟时代潮流&#xff0c;深入掌握AI技术的精髓&#xff0c;才能在激烈的市场竞争中独占鳌头。《AI产品经理手册》正是这样一部为AI产品经理量身定制的实战宝典&#xff0c;…