博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
预处理、const与sizeof相关面试题
阅读量:6159 次
发布时间:2019-06-21

本文共 1385 字,大约阅读时间需要 4 分钟。

1.用预处理指令#define 声明一个常数,用以表明一年中有多少秒(忽略闰年问题)

    #define语法知识:

   (1) 不能以分号结束,括号的使用防止宏定义展开后的二义性。

   (2) 预处理器将为你计算常数表达式的值,因此给出计算表达式而不是具体的值更好。

   (3) 意识到这个表达式将使一个16位机的整型数溢出,因此要用到长整型符号L,(UL表示无符号长整型)

   答案:#define SECONDS_PER_YEAR(60*60*24*365)UL

2.写一个标准宏MIN 返回较小的数

  注意:在宏定义中要小心地把参数用括号括起来

  答案:#define MIN ((a)<=(b)?(a):(b))

3.What dose the keyword "const"means in C program? Please at least make two examples about the usage of const.

  答案:(1) 可以定义const常量

          (2)const可以修饰函数的参数和返回值,甚至函数的定义体。被const修饰的东西受到强制保护,可以预防意外的变动,提高程序的健壮性。

4.const和#define 相比有什么不同?

  答案:(1) const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换中可能会产生意料之外的错误。

          (2) 有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。在C++程序中只使用const常量而不使用宏常量。

5.sizeof()

  (1) 静态变量存放在全局数据区,而sizeof计算栈中分配的大小,不把静态变量计算在内。

6.sizeof 和 strlen的区别

  答案:(1) sizeof操作符的结果类型是size_t,它在头文件的typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。

          (2) sizeof是运算符,strlen是函数

          (3) sizeof 可以用类型做参数,strlen只能用char*做参数,且必须是以“\0”结尾的。sizeof还可以用函数做参数

          (4) 数组做sizeof的参数不退化,传递给strlen就退化为指针了。

          (5) 大部分编译程序在编译的时候把sizeof计算过了,是类型或是变量的长度

          (6) strlen 的结果要在运行的时候才能计算出来,用来计算字符串的长度,而不是类型占内存大小。

          (7) sizeof 后如果是类型必循加括号,如果是变量名可以不加括号,因为sizeof是个操作符而不是个函数,

          (8) 当使用了一个结构体或变量时,sizeof返回实际的大小。当使用一静态的空间数组时,sizeof返回全部数组的尺寸。sizeof操作符不能返回被动态分配的数组或外部数组的尺寸。

          (9)sizeof计算结构变量的大小就必须考虑数据对齐问题。

          (10) sizeof不能用于函数类型,不完全类型或者位字段。不完全类型指的是具有未知存储大小数据的数据类型,如未知存储大小的数组类型,未知内容的结构体或联合类型,void类型。

转载于:https://www.cnblogs.com/junglefish/p/5468251.html

你可能感兴趣的文章
委托到Lambda的进化: ()=> {} 这个lambda表达式就是一个无参数的委托及具体方法的组合体。...
查看>>
apache 伪静态 .htaccess
查看>>
unity3d 截屏
查看>>
ASP.NET MVC学习之控制器篇
查看>>
MongoDB ServerStatus返回信息
查看>>
分析jQuery源码时记录的一点感悟
查看>>
程序局部性原理感悟
查看>>
UIView 动画进阶
查看>>
Spring如何处理线程并发
查看>>
linux常用命令(用户篇)
查看>>
获取组件的方式(方法)
查看>>
win2008 server_R2 自动关机 解决
查看>>
我的友情链接
查看>>
在C#调用C++的DLL简析(二)—— 生成托管dll
查看>>
Linux macos 常用终端操作
查看>>
企业网络的管理思路
查看>>
Linux磁盘分区与挂载
查看>>
J2se学习笔记一
查看>>
DNS视图及日志系统
查看>>
老李分享:Android性能优化之内存泄漏 3
查看>>