随笔分类 -  C++

somethings about c++
摘要:每日一问15:C++中的.h,cpp以及.hpp文件 1. 编译器角度的头文件(.h)和源文件(.cpp) 先从编译器角度,来看一下头文件(.h)和源文件(.cpp): 对于头文件(.h),在预处理阶段,头文件被包含到源文件后,它的使命就基本结束了。头文件包含了程序运行中可能需要用到的变量和函数等的 阅读全文
posted @ 2021-04-06 16:51 浩楠honer 阅读(3419) 评论(0) 推荐(1)
摘要:指向const常量的指针可以修改常量的值 实例 先直接看代码: int main(int argc, char const* argv[])c { const int a = 100; const int* pa = &a; int* pa_1 = &a; //*pa = 3; // 编译不过,指针 阅读全文
posted @ 2021-03-15 15:39 浩楠honer 阅读(890) 评论(0) 推荐(0)
摘要:STL各容器的底层实现及其优缺点 序列式容器 ​ 序列式容器,即以线性排列(类似普通数组的存储方式)来存储某一指定类型(例如 int、double 等)的数据,需要特殊说明的是,该类容器并不会自动对存储的元素按照值的大小进行排序。C++本身提供了array序列式容器,也就是普通的数组。 1.vect 阅读全文
posted @ 2021-03-13 10:38 浩楠honer 阅读(1118) 评论(0) 推荐(0)
摘要:C++中static关键字的作用 1.隐藏 ​ 在同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。如果加了static,就会对其它源文件隐藏。利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。static可以用作函数和变量的前缀,对于函数来讲,s 阅读全文
posted @ 2021-03-04 09:30 浩楠honer 阅读(976) 评论(0) 推荐(0)
摘要:每日一问12:NULL和nullptr的区别 C中的NULL和C++中的NULL ​ 在C中,NULL表示空指针,而在C++中,NULL就是整型0。它们各自的定义如下: //C #define NULL ((void*)0) //C++ #define NULL 0 ​ 在C中,NULL是一个voi 阅读全文
posted @ 2021-01-12 10:14 浩楠honer 阅读(668) 评论(0) 推荐(0)
摘要:跟着webbench学习C++网络编程(二) ​ webbench.c是最主要的文件,里面的结构大概如下: 我会用在代码中注释的方式来记录学习的过程: /* * (C) Radim Kolar 1997-2004 * This is free software, see GNU Public Lic 阅读全文
posted @ 2020-12-28 15:47 浩楠honer 阅读(118) 评论(0) 推荐(0)
摘要:跟着webbench学C++网络编程(一) ​ 最近看了c++网络编程的基础知识,现在结合一些项目来深入学习。由浅入深,先从网络测试工具webbench开始学习。 ​ webbech的源码,主要是两个文件,一个是socket.c,一个是webbench.c。先从简单的socket.c开始。socke 阅读全文
posted @ 2020-12-21 20:40 浩楠honer 阅读(213) 评论(0) 推荐(0)
摘要:每日一问10:内存泄漏 内存泄漏是什么 内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。内存泄漏不是指内存在物理上的消失,而是指失去了对该段内存的控制,因而造成了内存的浪费。内存泄漏仅仅指 阅读全文
posted @ 2020-12-07 10:27 浩楠honer 阅读(307) 评论(0) 推荐(0)
摘要:C++每日一问9:关于野指针 1.什么是野指针 ​ 野指针(wild pointer),也就是指向了一个未知位置的指针,解引用一个野指针就是访问一个不确定的地址,获取一个不确定的结果。 2.野指针的成因 ​ 野指针的成因一般有三种: 1.指针变量声明时未初始化 int main() { int* a 阅读全文
posted @ 2020-12-07 08:09 浩楠honer 阅读(277) 评论(0) 推荐(0)
摘要:每日一问8:C++中的内存对齐机制是什么 什么是内存对齐 ​ 要理解内存对齐我们先来看一个现象: #include<iostream> #include<Windows.h> #pragma pack (8) using namespace std; typedef struct { char b; 阅读全文
posted @ 2020-12-05 09:32 浩楠honer 阅读(135) 评论(0) 推荐(0)
摘要:1.类型不同 BOOL为int 型;bool为布尔型。 2.长度不同 bool只有一个字节;BOOL长度根据实际环境确定,一般为4字节。 3.取值不同 bool取值false和true,是0和1的区别。给bool赋值时,除了false和true,可用任何整型的数据如int,char,double等, 阅读全文
posted @ 2020-12-03 20:25 浩楠honer 阅读(680) 评论(0) 推荐(0)
摘要:每日一问6:short、int、long以及long long 的区别 ​ c中,short、int、long以及long long都是内置整型类型,其中long long是在C11中新定义的。它们的大小会因为机器环境的变化而变化,但是C++做出了一些规定: 一个int至少和一个short一样大,一 阅读全文
posted @ 2020-12-02 15:37 浩楠honer 阅读(1851) 评论(0) 推荐(0)
摘要:C++中区别 i++和++i很明显的区别就是:++i是先对i进行加一操作然后再返回i的值,而i++是先返回i的值再对i进行加一操作。 int main() { int i = 1, j = 1; cout << "i++:" << i++ << endl; cout << "++j:" << ++j 阅读全文
posted @ 2020-10-12 17:22 浩楠honer 阅读(1256) 评论(0) 推荐(0)
摘要:extern是什么及其作用 extern是c++引入的一个关键字,它可以应用于一个全局变量,函数或模板声明,说明该符号具有外部链接(external linkage)属性。也就是说,这个符号在别处定义。一般而言,C++全局变量的作用范围仅限于当前的文件,但同时C++也支持分离式编译,允许将程序分割为 阅读全文
posted @ 2020-08-04 09:42 浩楠honer 阅读(19816) 评论(0) 推荐(1)
摘要:今天写程序时,遇到一个问题,int型数据溢出,于是思考如何处理并预防这个问题。 首先,一般来说int类型为4字节共32位,所以一个int能够表示的数据的范围为: [−231, 231− 1],表示为十进制为:[-2147483648 ~ 2147483647]。好在C++中预定义了两个宏INT_MA 阅读全文
posted @ 2020-06-29 16:28 浩楠honer 阅读(7762) 评论(0) 推荐(0)
摘要:最近在阅读《STL源码刨析》的过程中,遇到了POD型别,书中的解释是: POD意指Plain Old Data,也就是标量型别(scalar types)或传统的C struct型别。POD型别必然拥有trivial ctor/dctor/copy/assignment operator函数。(这里 阅读全文
posted @ 2020-06-19 10:42 浩楠honer 阅读(756) 评论(0) 推荐(0)
摘要:最近由于项目需要,需要用C++编辑Json数据为pdf并导出,记录一下学习过程。 c++ 第三方pdf库的选择 网上找到的可用C++ pdf库有libharu和pdflib, 其中libharu是开源的,pdflib个人使用是免费的,商用的则需要授权。一开始我是用的libharu, 从网上下载源码, 阅读全文
posted @ 2020-05-30 11:39 浩楠honer 阅读(5590) 评论(2) 推荐(1)
摘要:左值与右值(lvalue&rvalue) 左右值来源于C语言,原意是为了方便记忆:左值可以位于赋值语句的左侧,右值则不能。但是在C++中,左右值的区分没有那么简单,还存在 许多例外的情况,如: 一个左值表达式的求值结果是一个对象或一个函数,然而以常量对象为代表的某些左值实际上是不能作为赋值语句的左侧 阅读全文
posted @ 2020-04-09 08:47 浩楠honer 阅读(683) 评论(0) 推荐(0)
摘要:因为这里没有明确指出堆是指数据结构还是存储方式,所以两个尝试都回答一下。 一.堆和栈作为数据结构 1.堆(heap),也叫做优先队列(priority queue),队列中允许的操作是先进先出(FIFO),在队尾插入元素,在队头取出元素。而堆也是一样,在堆底插入元素,在堆顶取出元素,但是堆中元素的排 阅读全文
posted @ 2020-01-12 11:35 浩楠honer 阅读(1297) 评论(0) 推荐(0)
摘要:指针(pointer)和引用(references)都是对另一个变量的一种关联,即通过指针和引用可以使用另一个变量。而它们最大的区别在于:指针是一个变量,而引用不是。但在c++底层中,引用是通过指针实现的,所以,在实现层面上来说,引用就是指针,但是在c++语法上来说,c++编译器并不为引用类型分配内 阅读全文
posted @ 2020-01-10 20:11 浩楠honer 阅读(504) 评论(0) 推荐(0)