海盗船长
const、sizeof与内联函数相关面试题
关注作者
前往小程序,Get
更优
阅读体验!
立即前往
腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
海盗船长
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
社区首页
>
专栏
>
const、sizeof与内联函数相关面试题
const、sizeof与内联函数相关面试题
海盗船长
关注
发布于 2022-11-02 18:09:42
464
0
发布于 2022-11-02 18:09:42
举报
文章被收录于专栏:
基础知识文章
1.const与#define相比有什么不同?
const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符匹配,没有类型安全检查,并且在字符替换中可能会产生意想不到的错误(边际效应)。
有些集成测化的测试工具可以对const常量进行调试,但是不能对宏常量进行调试。
在C++程序中只使用const常量而不使用宏常量,即const常量完全取代宏常量。
在C++程序中,类里面的数据成员加上mutable后,修饰为const的成员变量,就可以修改它了。
2.sizeof与strlen的区别?
sizeof操作符的结果类型是size_t,他在头文件中的typedef为unsigned int类型
sizeof是运算符,strlen是函数
sizeof可以用类型做参数,strlen只能用char* 做参数,且必须是以“\0”结尾的。sizeof还可以用函数做参数。
数组作sizeof的参数不退化,传递给strlen就退化为指针
大部分编译程序在编译的时候就把sizeof计算过了,是类型或是变量的长度。
strlen的结果要在运行的时候才能计算出来,用来计算字符串的长度,而不是类型占内存的大小。
sizeof后如果是类型必须加括号,如果是变量名可以不加括号。这是因为sizeof是一个操作符,而不是函数。
当使用了一个结构类型或变量时,sizeof返回实际的大小。当使用一静态变量的空间数组时,sizeof返回全部数组的尺寸。sizeof操作符不能返回被动动态分配的数组,或者外部的数组的尺寸。
数组作为参数传给函数时传递的是指针而不是数组,传递的是数组的首地址。
sizeof操作符不能用于函数类型,不完全类型或位字段。不完全类型指具有位置存储大小数据的数据类型,如位置大小的数组类型、未知内容的结构或联合类型、void类型等。
3.说明sizeof的使用场景
sizeof操作符的一个主要用途是与存储分配和I/O系统那样的例程进行通信。
用它可以看看某种类型的对象在内存中所占的单位字节。
在动态分配一对象时,可以让系统知道要分配多少内存。
便于一些类型的补充。
由于操作数的字节数在实现时可能会出现变化,建议在设计操作数字节大小时用sizeof代替常量计算。
如果操作数是函数中的数组形参或函数类型的形参,sizeof给出指针的大小。
4.内联函数和宏函数的区别是什么?
内联函数和普通函数相比可以加快程序运行的速度,因此不需要中断调用,在编译的时候内联函数可以直接被镶嵌到目标代码中。而宏只是一个简单的替换。
内联函数制作参数类型检查,这是内联函数跟宏比的优势。
inline是指嵌入代码,就是在调用函数的地方不是跳转而是直接把代码写进去。
inline一般只用于以下情况:
一个函数不断被重复调用
函数只有简单的几行,且函数不包括for、while、switch语句。
本文参与
腾讯云自媒体同步曝光计划
,分享自作者个人站点/博客。
原始发表:2022-10-23,如有侵权请联系
cloudcommunity@tencent.com
删除
前往查看
编程算法
c++
打包
本文分享自
作者个人站点/博客
前往查看
如有侵权,请联系
cloudcommunity@tencent.com
删除。
本文参与
腾讯云自媒体同步曝光计划
,欢迎热爱写作的你一起参与!
编程算法
c++
打包
评论
登录
后参与评论
0 条评论
热度
最新
推荐阅读
LV.
文章
0
获赞
0
目录
1.const与#define相比有什么不同?
2.sizeof与strlen的区别?
3.说明sizeof的使用场景
4.内联函数和宏函数的区别是什么?
inline一般只用于以下情况:
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档
0
0
0
推荐