标签 StackOverflow

匿名命名空间 VS static

问题 匿名命名空间和关键词 static 都可以让其声明的变量或函数变为内部链接属性,那么它们之间的区别是什么? 回答 首先,匿名命名空间比关键词 static 的功能更丰富,因此我们更推荐使用前者。…

C++ 头文件是使用 .h 还是 .hpp

问题 我在写 C++ class 的定义部分时,代码都是放在后缀 *.h 文件中,最近在接触 Boost 库的时候发现里边使用的都是 *.hpp 后缀,那么两者在使用上有什么区别? 回答 *.hpp …

static const VS #define VS enum

问题 在 C 语言中,下面的用法哪个最好? 回答 取决于你用来干什么。 static const int var = 5 #define var 5 enum { var = 5 } 如果需要传指针,…

声明和定义有什么区别

问题 C/C++ 中,声明和定义有什么区别? 回答 1. 声明不分配存储空间,定义会分配。 定义会实实在在地创造这个东西,而声明只是告诉编译器有这么个东西,它的创造在别处。 2. 声明可以多次,但定义…

C++ 使用 ifstream 按行读取文件内容

问题 下面的文本文件, 其中每行的数字,比如 5 3 是一对坐标,如何使用 C++ 按行读取获取这些坐标? 回答 首先,定义一个 ifstream 对象, 接着有两种方法可以实现, 按空格和换行符进行…

i++ 和 ++i 有什么区别

问题 C 语言中, i++ 和 ++i 有什么区别?在 for 语句中应该用哪个? 回答 ++i 先使 i 先自加一,然后返回 i, i++ 先返回 i,再使 i 自加一, 在 for 语句中,建议使…

宏中的 do-while 和 if-else 语句是干嘛用的

问题 比如下面的语句, 为什么不直接写成这样, 回答 其实是为了把这个宏模拟成一条真实的语句。 宏被替换就会变成这样, 很明显,这是不符合预期的,你不得不这么做, 但总有人会忘记加上 {}。所以加上 …

while(1) vs while(2)

问题 下面的代码哪个更快? 这是我的一个面试官提出的,我给出的答案是:一样快! 但面试官说, while(1) 的更快! 真的是这样么? 回答 对于现代编译器来说,肯定是一样快的! 但对于程序员来说可…

什么是段错误

问题 什么是段错误?在 C 和 C++ 中有区别么?段错误和空悬指针有关系么? 回答 段错误是由于程序访问了本不属于它的的内存而引起的错误。 每当遇到段错误时,你就应该知道程序在内存访问上出错了。比如…

一个局部变量可以在其作用域之外访问么

问题 上面的代码运行不会报错,并且会输出 58,这是为什么? 回答 局部变量确实是不可以被外部使用的。 你的这种情况只是恰巧那块内存区是存在的,但它并不属于 foo 函数里的 a 所有,在实际编程中一…

如何确定 C 语言中数组的大小

问题 C 语言中如何确定数组的元素个数? 回答 但上面的写法还有点不足。如果以后数组 a 的类型变为其它类型,那么 sizeof(int) 这种写法就会出现兼容问题,所以建议下面的写法, 如果你的程序…