【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++ 代码无缝地集成。

相关推荐
普通网友16 分钟前
C++编译期数据结构
开发语言·c++·算法
代码程序猿RIP23 分钟前
【C++开发面经】全过程面试问题详解
java·c++·面试
whatever who cares24 分钟前
Java/Android中BigDecimal的相关操作
android·java·开发语言
IT_陈寒42 分钟前
Redis深度优化:10个让你的QPS提升50%的关键配置解析
前端·人工智能·后端
普通网友1 小时前
嵌入式C++安全编码
开发语言·c++·算法
烤麻辣烫1 小时前
黑马程序员苍穹外卖(新手) DAY3
java·开发语言·spring boot·学习·intellij-idea
q***48251 小时前
基于python语言的网页设计(手把手教你设计一个个人博客网站)
开发语言·python
妮妮喔妮1 小时前
JAVA反射的介绍(优缺点)
java·开发语言
云知谷1 小时前
【软件测试】《集成测试全攻略:Mock/Stub 原理 + Postman/JUnit/TestNG 实战》
c语言·开发语言·c++·软件工程·团队开发
武子康1 小时前
大数据-157 Apache Kylin 全面指南:MOLAP 架构、Hive/Kafka 实战与实时 OLAP 落地
大数据·后端·apache kylin