【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 修饰的是变量的声明,说明此变量将在文件以外或在文件后面部分定义。

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

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

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

1. 头文件包含方式:C 库的函数声明通常定义在头文件中,为了能够在 C++ 中正确使用这些库函数,应当使用 extern "C" 来告诉 C++ 编译器这些函数是按照 C 的方式进行编译和命名的。例如: 

extern "C" {
    #include "C_library.h"
}

2. 命名空间:C 库通常不包含在命名空间中,而 C++ 代码是通过命名空间来组织和管理的。因此,在 C++ 中调用 C 库函数时,需要使用全局作用域操作符 (::) 来显式指定函数所在的命名空间,例如: 

::C_library_function();

 3. 函数指针和回调:C 库中常常使用函数指针和回调函数来实现某些功能。在 C++ 中,可以使用函数指针和函数对象(Functor)来实现函数回调。需要注意的是,函数指针和函数对象的类型与库函数的期望参数类型要匹配。

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

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

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

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值