C语言——八股文(笔试面试题)——持续更新

目录

更新日历:

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

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

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

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

5、#define和typedef的区别?

6、 Static与extern的作用?

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

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

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

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

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

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

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

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

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

16、 Struct与union的区别?

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

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

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

20、 关键字const有什么含意

21、malloc(0) 的意义

22、#define DOUBLE(x) x+x

请问,int a = 5 * DOUBLE(5)

打印a的值为多少?

23、如果你有一对兔子,每一对兔子在第三个月开始每个月可以生下一对兔子,兔子不会死亡,请打印出每个月的对应的兔子总数

24、用两个队列实现栈的功能

25、一次遍历,判断长度为n的整形数组是否存在重复的元素(封装为函数)

26、判断一个长度为n的整形数据是无序的、重复、升序还是降序的


 小编也是学习者,出错了欢迎指正

更新日历:

 2024/11/1:22-26

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

22、#define DOUBLE(x) x+x

请问,int a = 5 * DOUBLE(5)

打印a的值为多少?

a = 30;

23、如果你有一对兔子,每一对兔子在第三个月开始每个月可以生下一对兔子,兔子不会死亡,请打印出每个月的对应的兔子总数

我的实现方式是,给第一个月,第二个月,第三个月的兔子都定义一个变量,在while(1)里,

count计数,随着count++;第一个月的数量给第二个月,第二个月的数量加到第三个月,第三个月的数量先给第一个月之后*2;总数=第一个月的加第二个月的加第三个月的;月份就是count

没有具体实现;需要的可以评论

24、用两个队列实现栈的功能

思路:

  1. 全部入队1(入栈)
  2. 队1元素出队,留下最后一个元素,出队的元素入队2
  3. 队1留下的最后一个元素,出队(出栈)
  4. 循环上面入栈至出栈操作

25、一次遍历,判断长度为n的整形数组是否存在重复的元素(封装为函数)

个人还未想到好的解决思路

26、判断一个长度为n的整形数据是无序的、重复、升序还是降序的

思路:定义两个变量,一个count1一个temp(初始值都幅值为数组长度)count2 = 0;

循环遍历判断相近的两位的大小,如果 前一个<后一个 count1 +1

                                                              前一个>后一个 count1 - 1

                                                              前一个=后一个 count2 + 1

如果count1 + count2 = 2*temp 升序

        (temp-count1) + count2 = temp降序

        count2 = temp 重复

        其他情况 无序

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

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

相关文章

Java后端面试内容总结

先讲项目背景&#xff0c;再讲技术栈模块划分&#xff0c; 讲业务的时候可以先讲一般再特殊 为什么用这个&#xff0c;好处是什么&#xff0c;应用场景 Debug发现问题/日志发现问题. QPS TPS 项目单元测试&#xff0c;代码的变更覆盖率达到80%&#xff0c;项目的复用性高…

TI-Trends in Immunotherapy

文章目录 一、征稿简介二、重要信息三、服务简述四、投稿须知五、联系咨询 一、征稿简介 二、重要信息 期刊官网&#xff1a;https://ais.cn/u/3eEJNv 三、服务简述 Trends in Immunotherapy 是一本开放获取的同行评审期刊&#xff0c;涵盖与所有基于免疫系统的领域相关的各…

springboot-starter 整合feignClient

项目结构图 引入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.o…

Python+Appium+Pytest+Allure自动化测试框架-安装篇

文章目录 安装安装ADT安装NodeJs安装python安装appium安装Appium Server&#xff08;可选&#xff09;安装Appium-Inspector&#xff08;可选&#xff09;安装allure安装pytest PythonAppiumPytestAllure框架的安装 Appium是一个开源工具&#xff0c;是跨平台的&#xff0c;用于…

【Spring IoC】容器和IoC介绍以及IoC程序开发的优势

文章目录 Spring 是什么什么是容器什么是 IoCIoC 介绍传统程序开发解决方法IoC 程序开发IoC 的优势 在前面中&#xff0c;我们学习了 Spring Boot 和 Spring MVC 的开发&#xff0c;可以完成一些基本功能的开发了&#xff0c;但是什么是 Spring 呢&#xff1f;Spring&#xff0…

【眼疾识别】Python+深度学习+人工智能+算法模型训练+TensorFlow+CNN卷积神经网络算法

一、项目介绍 开发眼疾识别系统时&#xff0c;我们选择Python作为核心编程语言&#xff0c;并依托深度学习技术&#xff0c;特别是利用TensorFlow框架来构建ResNet50卷积神经网络。该系统通过训练包含四种眼疾图像的数据集——白内障、糖尿病性视网膜病变、青光眼和正常眼睛—…

Chrome与夸克谁更节省系统资源

在当今数字化时代&#xff0c;浏览器已经成为我们日常生活中不可或缺的一部分。无论是工作、学习还是娱乐&#xff0c;我们都依赖于浏览器来访问互联网。然而&#xff0c;不同的浏览器在性能和资源消耗方面存在差异。本文将探讨Chrome和夸克两款浏览器在系统资源消耗方面的表现…

让Chrome⽀持⼩于12px 的⽂字⽅式有哪些?区别?

让Chrome⽀持⼩于12px 的⽂字⽅式有哪些&#xff1f;区别&#xff1f; 1、背景 Chrome 中⽂版浏览器会默认设定⻚⾯的最⼩字号是12px&#xff0c;英⽂版没有限制 原由 Chrome 团队认为汉字⼩于12px就会增加识别难度 • 中⽂版浏览器 与⽹⻚语⾔⽆关&#xff0c;取决于⽤户在C…

Word首行空格不显示空格符号问题

Word段落首行空格设置指南 问题描述 在Word中编辑文档时&#xff0c;有时会遇到段落首行敲击空格键却不显示空格的问题。这通常与Word的自动更正设置有关。 解决方法 要解决此问题&#xff0c;需要调整Word的自动更正设置。具体步骤如下&#xff1a; 打开Word的"自动更…

极简实现酷炫动效:Flutter隐式动画指南第二篇之一些酷炫的隐式动画效果

目录 前言 1.弹性放大按钮效果 2.旋转和缩放组合动画 3.颜色渐变背景动画 4.缩放进出效果 前言 在上一篇文章中&#xff0c;我们介绍了Flutter中的隐式动画的一些相关知识&#xff0c;在这篇文章中,我们可以结合多个隐式动画 Widget 在 Flutter 中创建一些酷炫的视觉效果&…

助力风力发电风机设备智能化巡检,基于YOLOv3全系列【tiny/l/spp】参数模型开发构建无人机巡检场景下风机叶片缺陷问题智能化检测预警模型

在全球能源转型的大潮中&#xff0c;清洁环境能源的发展已成为各国关注的焦点。风力发电作为其中的佼佼者&#xff0c;以其可再生、无污染的特点&#xff0c;受到了广泛的青睐。然而&#xff0c;风力发电设施大多建于人迹罕至的地区&#xff0c;设备庞大且复杂&#xff0c;其维…

【深度学习】实验 — 动手实现 GPT【三】:LLM架构、LayerNorm、GELU激活函数

【深度学习】实验 — 动手实现 GPT【三】&#xff1a;LLM架构、LayerNorm、GELU激活函数 模型定义编码一个大型语言模型&#xff08;LLM&#xff09;架构 使用层归一化对激活值进行归一化LayerNorm代码实现scale和shift 实现带有 GELU 激活的前馈网络测试 模型定义 编码一个大…

进程守护SuperVisord内部的进程定时监测并重启

一个swoole的wensocket程序运行在SuperVisord下端口9503 设置一个每分钟任务监测9503的端口链接数&#xff0c;输出链接数&#xff0c;并在链接数为0的情况下重启wensocket进程。 以下截图是宝塔面板环境下 #!/bin/bash current$(date %H.%M) ws9503_procnumnetstat -nat | gre…

深度学习每周学习总结J4(ResDenseNet 算法探索实践 - 鸟类识别)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 目录 一&#xff1a;回顾与总结&#xff1a; 三种神经网络模型对比研究及尝试构成新的网络结构模型卷积计算过程ResNet-50 模型1. 关于残差…

【天线&空中农业】作物病害检测系统源码&数据集全套:改进yolo11-EfficientFormerV2

改进yolo11-attention等200全套创新点大全&#xff1a;作物病害检测系统源码&#xff06;数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.11.01 注意&#xff1a;由于项目一直在更新迭代&#xff0c;上面“1.图片效果展示”和“2.视频效果展示”展示的系统图片或者…

Linux版更新流程

一.下载更新包 下载地址&#xff1a;https://www.nvisual.com/%e4%b8%8b%e8%bd%bd/ 二.更新包组成 更新包由三部分组成&#xff1a; 前端更新包&#xff1a;压缩的ZIP文件&#xff0c;例如&#xff1a;dist-2.2.26-20231227.zip (2.2.26是版本号 20231227是发布日期)后端更…

c++仿函数--通俗易懂

1.仿函数是什么 仿函数也叫函数对象&#xff0c;是一种可以像函数一样被调用的对象。从编程实现的角度看&#xff0c;它是一个类&#xff0c;不过这个类重载了函数调用运算符() class Add { public:int operator()(int a, int b) {return a b;} }; 注意&#xff1a;使用的时…

《中安证件阅读机:边检执法办案的得力助手》

在边检执法办案的过程中&#xff0c;高效、准确地识别和查验各类证件至关重要。而中安证件阅读机的出现&#xff0c;为边检工作带来了极大的便利&#xff0c;成为了边检执法人员的得力助手。 一、中安证件阅读机的强大功能 中安证件阅读机具备先进的技术和丰富的功能。它能够快…

计算机网络:网络层 —— IP数据报的发送和转发过程

文章目录 IP数据报的发送和转发过程主机发送IP数据报路由器转发IP数据报示例 IP数据报的发送和转发过程 IP 数据报的发送和转发过程包含以下两个过程&#xff1a; 主机发送IP数据报路由器转发IP数据报 直接交付&#xff1a;源主机与目的主机在同一网络中间接交付&#xff1a;…