【C++ 面试 - 基础题】每日 3 题(九)

✍个人博客:Pandaconda-CSDN博客

📣专栏地址:http://t.csdnimg.cn/fYaBd

📚专栏简介:在这个专栏中,我将会分享 C++ 面试中常见的面试题给大家~

❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪

25. sizeof 的使用

sizeof 是 C 语言中的运算符,用来计算一个类型/对象的所占用的内存大小,有些 C/C++面试官会出一些 sizeof(xxx) 的大小是多少的问题。

我总结了几个关键的点,掌握这几个基本上就能答对大部分类似问题了:

  1. 指针的大小永远是固定的,取决于处理器位数,32 位就是 4 字节,64 位就是 8 字节。

  2. 数组作为函数参数时会退化为指针,大小要按指针的计算。

  3. struct 结构体要考虑字节对齐。

  4. 字符串数组要算上末尾的 '\0'。

举个例子:

26. 变量 的声明和定义有什么区别

变量的定义为变量分配地址和存储空间, 变量的声明不分配地址。一个变量可以在多个地方声明,但是只在一个 地方定义。加入 extern 修饰的是变量的声明,说明此变量将在文件以外或在文件后面部分定义。

说明:很多时候一个变量,只是声明不分配内存空间,直到具体使用时才初始化,分配内存空间, 如外部变量。

cpp 复制代码
int main()
{
    extern int A;
    //这是个声明而不是定义,声明A是一个已经定义了的外部变量
    //注意:声明外部变量时可以把变量类型去掉如:extern A;
    dosth(); //执行函数
}
int A; //是定义,定义了A为整型的外部变

27. 如果 C++ 想用调用 C 的库,有什么需要的注意的吗?

  1. 头文件包含方式:C 库的函数声明通常定义在头文件中,为了能够在 C++ 中正确使用这些库函数,应当使用 extern "C" 来告诉 C++ 编译器这些函数是按照 C 的方式进行编译和命名的。例如:
cpp 复制代码
extern "C" {
    #include "C_library.h"
}
  1. 命名空间:C 库通常不包含在命名空间中,而 C++ 代码是通过命名空间来组织和管理的。因此,在 C++ 中调用 C 库函数时,需要使用全局作用域操作符 (::) 来显式指定函数所在的命名空间,例如:
cpp 复制代码
::C_library_function();
  1. 函数指针和回调:C 库中常常使用函数指针和回调函数来实现某些功能。在 C++ 中,可以使用函数指针和函数对象(Functor)来实现函数回调。需要注意的是,函数指针和函数对象的类型与库函数的期望参数类型要匹配。

  2. 异常处 理:C 库通常不会抛出异常,而是通过返回特定的错误码来表示错误。在调用 C 库函数时,需要注意检查返回值以判断函数是否执行成功,并根据需要进行相应的错误处理。

  3. 类型兼容性:C++ 具有更丰富的类型系统和功能,因此存在一些类型兼容性的问题。在调用 C 库函数时,需要注意 C 和 C++ 的数据类型和内存布局的差异,确保正确地转换和处理数据。

总结起来,调用 C 库时,需要注意正确地包含头文件,使用 extern "C" 声明函数,处理命名空间、异常处理等问题,并根据实际情况进行类型兼容性的处理。这样可以确保 C++ 代码能够正确地调用 C 库,并与 C++ 代码无缝地集成。

相关推荐
DogDaoDao几秒前
leetcode 面试经典 150 题:长度最小的子数组
算法·leetcode·面试·双指针·滑动窗口·数据结构与算法·子数组
sjsjs115 分钟前
【多维 DP】力扣2400. 恰好移动 k 步到达某一位置的方法数目
算法·leetcode·职场和发展
陌然。。10 分钟前
【347. 前 K 个高频元素 中等】
数据结构·c++·笔记·算法·leetcode
Q_192849990611 分钟前
基于Spring Boot的体育商品推荐系统
java·spring boot·后端
hakesashou13 分钟前
python怎么循环嵌套
开发语言·python
长安051115 分钟前
面试经典题目:LeetCode55_跳跃游戏
游戏·面试·职场和发展
RemainderTime15 分钟前
(七)Spring Cloud Alibaba 2023.x:RocketMQ 消息队列配置与实现
后端·spring cloud·微服务·rocketmq
潜意识起点16 分钟前
【潜意识Java】Java中JDBC过时方法的替代方案以及JDBC为什么过时详细分析
java·开发语言·数据库
code monkey.18 分钟前
【排序算法】——选择排序
c++·算法·排序算法