随笔分类 - 每日一问
每天回答一个问题,带着问题去学习。
摘要:每日一问15:C++中的.h,cpp以及.hpp文件 1. 编译器角度的头文件(.h)和源文件(.cpp) 先从编译器角度,来看一下头文件(.h)和源文件(.cpp): 对于头文件(.h),在预处理阶段,头文件被包含到源文件后,它的使命就基本结束了。头文件包含了程序运行中可能需要用到的变量和函数等的
阅读全文
摘要:每日一问14: 缓存和缓冲的区别 这两个名词在英文中,本来是不会混淆的,缓冲buffer,缓存cache,但是翻译成中文后却很容易搞混,要注意区分。 这两个概念并不是指泾渭分明的两个东西,而是不同角度的事物。先看一下***《深入理解计算机系统》***中对于缓存的定义: 一般而言,高速缓存
阅读全文
摘要:C++中static关键字的作用 1.隐藏 在同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。如果加了static,就会对其它源文件隐藏。利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。static可以用作函数和变量的前缀,对于函数来讲,s
阅读全文
摘要:每日一问12:NULL和nullptr的区别 C中的NULL和C++中的NULL 在C中,NULL表示空指针,而在C++中,NULL就是整型0。它们各自的定义如下: //C #define NULL ((void*)0) //C++ #define NULL 0 在C中,NULL是一个voi
阅读全文
摘要:每日一问10:内存泄漏 内存泄漏是什么 内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。内存泄漏不是指内存在物理上的消失,而是指失去了对该段内存的控制,因而造成了内存的浪费。内存泄漏仅仅指
阅读全文
摘要:C++每日一问9:关于野指针 1.什么是野指针 野指针(wild pointer),也就是指向了一个未知位置的指针,解引用一个野指针就是访问一个不确定的地址,获取一个不确定的结果。 2.野指针的成因 野指针的成因一般有三种: 1.指针变量声明时未初始化 int main() { int* a
阅读全文
摘要:每日一问8:C++中的内存对齐机制是什么 什么是内存对齐 要理解内存对齐我们先来看一个现象: #include<iostream> #include<Windows.h> #pragma pack (8) using namespace std; typedef struct { char b;
阅读全文
摘要:1.类型不同 BOOL为int 型;bool为布尔型。 2.长度不同 bool只有一个字节;BOOL长度根据实际环境确定,一般为4字节。 3.取值不同 bool取值false和true,是0和1的区别。给bool赋值时,除了false和true,可用任何整型的数据如int,char,double等,
阅读全文
摘要:每日一问6:short、int、long以及long long 的区别 c中,short、int、long以及long long都是内置整型类型,其中long long是在C11中新定义的。它们的大小会因为机器环境的变化而变化,但是C++做出了一些规定: 一个int至少和一个short一样大,一
阅读全文
摘要:我们知道任何类型的数据在计算机的底层都是0和1所表示,而不同的读取方式,给相同的字节带来了不同的解释方式,或解释为int型的数字,又或者解释为string的字符串。就比如C/C++语言中的union联合体数据结构,就是通过对同一段内存的数据按照不同的方式来解释从而获得不同类型的数据。而类型安全就是限
阅读全文
摘要:C++中区别 i++和++i很明显的区别就是:++i是先对i进行加一操作然后再返回i的值,而i++是先返回i的值再对i进行加一操作。 int main() { int i = 1, j = 1; cout << "i++:" << i++ << endl; cout << "++j:" << ++j
阅读全文
摘要:extern是什么及其作用 extern是c++引入的一个关键字,它可以应用于一个全局变量,函数或模板声明,说明该符号具有外部链接(external linkage)属性。也就是说,这个符号在别处定义。一般而言,C++全局变量的作用范围仅限于当前的文件,但同时C++也支持分离式编译,允许将程序分割为
阅读全文
摘要:因为这里没有明确指出堆是指数据结构还是存储方式,所以两个尝试都回答一下。 一.堆和栈作为数据结构 1.堆(heap),也叫做优先队列(priority queue),队列中允许的操作是先进先出(FIFO),在队尾插入元素,在队头取出元素。而堆也是一样,在堆底插入元素,在堆顶取出元素,但是堆中元素的排
阅读全文
摘要:指针(pointer)和引用(references)都是对另一个变量的一种关联,即通过指针和引用可以使用另一个变量。而它们最大的区别在于:指针是一个变量,而引用不是。但在c++底层中,引用是通过指针实现的,所以,在实现层面上来说,引用就是指针,但是在c++语法上来说,c++编译器并不为引用类型分配内
阅读全文

浙公网安备 33010602011771号