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

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指针的情况下,代码仍将正确运行。 

相关文章:

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

1、 什么是数组指针&#xff0c;什么是指针数组&#xff1f; 数组指针&#xff1a;指向数组的指针 指针数组&#xff1a;数组中的元素都是指针 2、 什么是位段&#xff0c;什么是联合体 位段&#xff08;Bit Field&#xff09;&#xff1a;在C语言中&#xff0c;允许在一个整数…...

解决 Oracle 数据库错误 ORA-12516:监听器无法找到匹配协议栈的处理程序

在使用 Oracle 数据库时&#xff0c;有时会遇到错误 ORA-12516&#xff0c;这个错误表明 Oracle 数据库的监听器无法为新的连接请求找到一个可用的处理程序&#xff0c;这通常是因为达到了连接数上限、配置问题或资源限制。本文将详细介绍如何解决这个问题。 一、错误描述 当…...

Flarum:简洁而强大的开源论坛软件

Flarum简介 Flarum是一款开源论坛软件&#xff0c;以其简洁、快速和易用性而闻名。它继承了esoTalk和FluxBB的优良传统&#xff0c;旨在提供一个不复杂、不臃肿的论坛体验。Flarum的核心优势在于&#xff1a; 快速、简单&#xff1a; Flarum使用PHP构建&#xff0c;易于部署&…...

方法+数组

1. 方法 1. 什么是方法 方法定义&#xff1a; // []表示可写可不写[public] [static] type name ( [type formal , type formal , ...]){方法体&#xff1b;[return value ;] }[修饰符] 返回值类型 方法名称([参数类型 形参 , 参数类型 形参 ...]){方法体代码;[return 返回值…...

驱动-----adc

在key1.c的基础上进行对adc1.c进行编写 首先将文件里面的key全部改为adc 再修改一下设备号 按键和adc的区别是什么,按键只需要按一下就触发了,并且不需要返回一个值出来, adc要初始化,启动,返回值 以下是裸机adc的代码: #include <s3c2440.h> #include "ad…...

js实现点击图片,使图片跟随鼠标移动(把注释打开是图片随机位置)

代码&#xff1a; <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Document</title>&l…...

MacOS的powermetrics命令查看macbook笔记本的耗能情况,附带查看ANE的工作情况

什么是 powermetrics&#xff1f; powermetrics 是 macOS 系统自带的一个命令行工具&#xff0c;用于收集和分析系统能源消耗数据。通过它&#xff0c;我们可以深入了解 Mac 的硬件性能、软件行为以及能源使用情况&#xff0c;从而优化系统配置&#xff0c;提高电池续航时间。…...

字符串函数

大家好&#xff0c;今天我们来了解几个字符串函数 1.strcpy函数 这个函数是一个字符串复制函数&#xff0c;其全称为string copy&#xff0c;它可以将一个源字符数组的内容复制到目标字符数组中&#xff0c;我们需要关注几个问题&#xff0c;首先源字符串必须以&#xff3c;0…...

Java数组的地址和元素访问 C语言空指针与野指针

1. public static void main(String[] args) {int []arr{1,2,3,4,5};int numarr[0];System.out.println(num);System.out.println(arr[1]);System.out.println(arr);//[I610f87f48//[表示地址 I表示数据类型 表示间隔符号&#xff08;固定格式&#xff09;//10f87f48表示地址…...

如何在Linux系统中使用SSH进行安全连接

如何在Linux系统中使用SSH进行安全连接 SSH简介 安装SSH 在Debian/Ubuntu系统中安装 在CentOS/RHEL系统中安装 启动SSH服务 验证SSH是否安装成功 SSH配置 配置监听端口 配置登录方式 SSH客户端 安装SSH客户端 使用SSH客户端 SSH密钥认证 生成SSH密钥对 复制公钥到远程服务器…...

Pandas 数据可视化指南:从散点图到面积图的全面展示

Pandas 数据可视化指南&#xff1a;从散点图到面积图的全面展示 本文介绍了使用 Pandas 进行数据可视化的多种方法&#xff0c;包括散点图、折线图、条形图、直方图、饼图和面积图等&#xff0c;涵盖了常见的图表类型及其实现方式。通过提供详细的代码示例&#xff0c;展示了如…...

Flink + Kafka 实现通用流式数据处理详解

Flink Kafka 实现通用流式数据处理详解 在大数据时代&#xff0c;实时数据处理和分析成为企业快速响应市场变化、提高业务效率和优化决策的关键技术。Apache Flink和Apache Kafka作为两个重要的开源项目&#xff0c;在数据流处理领域具有广泛的应用。本文将深入探讨Flink和Ka…...

Docker常用命令汇总

一、Docker基础命令 启动docker&#xff1a;systemctl start docker关闭docker&#xff1a;systemctl stop docker重启docker&#xff1a;systemctl restart dockerdocker设置随服务启动而自启动&#xff1a;systemctl enable docker查看docker 运行状态&#xff1a;systemctl…...

【Java笔记】0-为什么学习Java

呃&#xff0c;当然是为了找个Java的开发工作 当然是由于Java使用的人多和它天生自带的优点了~ 主要优点有以下几点&#xff1a; 简单性 C语法纯净版&#xff0c;没有头文件、指针运算、不用分配内存 面向对象 重点放在对象与其接口上&#xff0c;接近人的逻辑 可移植性 …...

海外云手机是什么?对外贸电商有什么帮助?

在外贸电商领域&#xff0c;流量引流已成为卖家们关注的核心问题。越来越多的卖家开始利用海外云手机&#xff0c;通过TikTok等社交平台吸引流量&#xff0c;以推动商品在海外市场的销售。那么&#xff0c;海外云手机到底是什么&#xff1f;它又能为外贸电商卖家提供哪些支持呢…...

【找到了】有人知道怎么在本地用记事本方式打开Linux文本文件吗?

就类似这种&#xff0c;我输入一个什么命令打开文件&#xff0c;就能在命令窗口上弹出一个编辑器来编辑文件。只记得好像有参数-e啥的。 命令行里面如何打开文本编辑器&#xff1f; &#xff08;&#xff09; 在linux命令行terminal上使用gedit直接就可以打开文本文件 那么在…...

docker 安装postgresql

前提&#xff1a;准备好postgresql镜像&#xff0c;如&#xff1a;镜像地址/postgres:15.8 使用docker安装posgresql&#xff1a; 1.docker pull 镜像地址/postgres:15.8 2.docker run -d --namepostgres -p 5432:5432 -v postgres-volume:/var/lib/postgresql/data -e PO…...

2004至2023中国分省统计面板数据-最新出炉_附下载链接

中国各省绿色税收相关数据&#xff08;2007-2022年&#xff09;概述 下载链接-点它&#x1f449;&#x1f449;&#x1f449;&#xff1a;中国分省统计面板数据&#xff08;2004-2023&#xff09;-最新出炉.zip 资源介绍 绿色税收主要是指以保护环境、合理开发利用自然资源、…...

【算法】排序算法总结

文章目录 内排序一、插入排序1.1 直接插入排序1.2 折半插入排序1.3 希尔排序 二、选择排序2.1 简单选择排序2.2 堆排序 三、交换排序3.1 冒泡排序3.2 快速排序Hoare版挖坑法快速排序前后指针法快速排序的非递归 四、归并排序递归版本非递归版本 五、基数排序六、计数排序内排序…...

双11来了,云计算优惠大集合

京东云 2C2G强烈推荐 连接直达...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...