C++基础知识
陈纪建
关注行业动态,找出最适合自己的发展道路
展开
-
位运算之左移右移运算之详解
先看如下一段左移右移的代码及其结果:代码#include "stdio.h"char leftshift(char i, int n){ if(n 0) return -1; return in;}char rightshift(char i, int n){ if(n 0) return -1; return i>>n;转载 2017-02-19 19:11:57 · 11630 阅读 · 0 评论 -
GDIplus的初次接触--加载并显示常用格式图片
在没有接触Gdiplus之前,在vc中绘制图片,通常加载一张位图,然后进行贴图。对于现在多种多样的图片格式,之前的GDI并不支持(应该是这样的,呵呵)。而使用Gdiplus则可以选择多种图片格式,比如BMP, ICON, GIF, JPEG, Exif, PNG, TIFF, WMF, and EMF。下面就介绍下首次接触Gdiplus的一个简单应用。一、包括相应的头文转载 2017-12-23 10:25:34 · 465 阅读 · 0 评论 -
数据结构——线性表 (顺序表、单链表、静态链表、循环链表、双向链表)
一、线性结构的基本特征: 1.集合中必存在唯一的一个“第一元素”; 2.集合中必存在唯一的一个 “最后元素”; 3.除最后元素在外,均有 唯一的后继; 4.除第一元素之外,均有 唯一的前驱。 如:java中的List接口,就是线性表。ArrayList就是顺序线性表,LinkedList就是链表线性表。二、线性表的基本操作: 1.InitList(*L): 初始化操作,建立一个空的线性表L。 2....转载 2018-04-09 15:19:31 · 499 阅读 · 0 评论 -
软件开发过程中所需要的文档
软件开发过程中所需要的文档软件项目开发过程中,应该按软件开发要求撰写十三类文档,文档编制要求具有针对性、精确性、清晰性、完整性、灵活性、可追溯性! 1、可行性分析报告 说明该软件开发项目的实现在技术上、经济上和社会因素上的可行性,评述为了合理地达到开发目标可供选择的各种可能实施方案,说明并论证所选定实施方案的理由。 2、项目开发计划 为软件项目实施方案制订出具体计划,应该包括各部分工作的负责人员...转载 2018-04-16 14:44:18 · 233 阅读 · 0 评论 -
软件质量管理实践总结
软件质量管理实践总结文章版权由作者小小小丝和博客园共有,若转载请于明显处标明出处:http://rpc.cnblogs.com/metaweblog/xxxs目录第一章:缺陷综述第二章:需求开发与管理第三章:配置与变更管理第四章:同行评审第五章:软件测试第六章:QA发现不符合问题的处理第七章:软件度量第八章:缺陷管理 第一章:缺陷综述1. 软件缺陷的定义:软件产品在某种程度上不能满足用户的需求2....转载 2018-04-16 15:00:49 · 3388 阅读 · 0 评论 -
二叉树的一些性质
树的介绍1. 树的定义树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:(01) 每个节点有零个或多个子节点;(02) 没有父节点的节点称为根节点;(03) 每一个非根节点有且只有一个父节点;(04) 除了根节点外,每个子节点可以分为多个不相交的子树。 2. 树的基本术语若...转载 2018-04-12 11:08:22 · 454 阅读 · 0 评论 -
网络学习
https://blog.csdn.net/leiflyy/article/details/50659496转载 2018-05-02 19:03:11 · 168 阅读 · 0 评论 -
vc++ 精确获取时间(QueryPerformanceCounter)
对于精确度要求高的定时操作,则应该使用QueryPerformanceFrequency()和 QueryPerformanceCounter()函数。数据类型ARGE_INTEGER既可以是一个8字节长的整型数,也可以是两个4字节长的整型数的联合结构, 其具体用法根据编译器是否支持64位而定。定时过程如下:在进行定时之前,先调用QueryPerformanceFrequency()函数获得机器内...转载 2018-05-10 10:20:12 · 1457 阅读 · 0 评论 -
多线程环境下生命周期的管理
前一篇文章写得实在太挫,重新来一篇。多线程环境下生命周期的管理多线程环境下,跨线程对象的生命周期管理会有什么挑战?我们拿生产者消费者模型来讨论这个问题。实现一个简单的用于生产者消费者模型的队列生产者消费者模型的基本结构如下图所示:如果我们要实现这个队列该怎么写?首先我们先简单挖掘下这个队列的一些基本需求。显而易见,这个队列需要支持多线程并发读写。我们知道,多线程并发...转载 2019-08-14 15:14:49 · 186 阅读 · 0 评论 -
EventLoop 及其线程模型
任务执行过程如果调用线程与EventLoop所在的线程是同一线程,任务直接执行,否则会放入EventLoop的队列中,下次执行。“Never put a long-running task in the execution queue, because it will block any other task from executing on the same thread.” If...原创 2019-08-21 16:31:40 · 391 阅读 · 0 评论 -
c的free和c++的delete的区别
首先free对应的是malloc;delete对应的是new;free用来释放malloc出来动态内存,delete用来释放new出来的动态内存空间。应用的区别为:1. 数组的时候int *p=(int*)malloc(10*sizeof(int)) 释放的时候 free(p)即可;这是因为编译器对malloc做了一些特殊的处理,以保证可以正确释放内存。而当int *p=new i转载 2017-11-21 15:41:14 · 898 阅读 · 0 评论 -
C++ ofstream和ifstream详细用法
ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O. stream这个类有两个重要的运算符: 1、插入器( 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显原创 2017-08-17 10:05:02 · 295 阅读 · 0 评论 -
C++ 跨平台编程宏定义
操作系统判定宏Windows: WIN32Linux: linuxSolaris: __sun编译器VC: _MSC_VERGCC/G++: __GNUC__SunCC: __SUNPRO_C和__SUNPRO_CC原创 2017-06-22 16:49:21 · 2571 阅读 · 0 评论 -
C++运算符详解
按位与运算符按位与运算符(&)参加运算的两个数据,按二进制位进行“与”运算。运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1; 即:两位同时为“1”,结果才为“1”,否则为0例如:3&5 即 0000 0011 & 0000 0101 = 0000 0001 因此,3&5的值得1。 另,负数按补码原创 2017-02-19 21:22:47 · 2895 阅读 · 0 评论 -
C语言中<CR>是什么意思
在文本处理中, CR, LF, CR/LF是不同操作系统上使用的换行符.Dos和windows采用回车+换行CR/LF表示下一行, 而UNIX/Linux采用换行符LF表示下一行,苹果机(MAC OS系统)则采用回车符CR表示下一行.CR用符号'\r'表示, 十进制ASCII代码是13, 十六进制代码为0x0D; LF使用'\n'符号表示, ASCII代码是10, 十六制为0x0A.所以Windo原创 2017-02-22 10:25:45 · 33728 阅读 · 0 评论 -
内存字节对齐
结构体字节对齐 在用sizeof运算符求算某结构体所占空间时,并不是简单地将结构体中所有元素各自占的空间相加,这里涉及到内存字节对齐的问题。从理论上讲,对于任何 变量的访问都可以从任何地址开始访问,但是事实上不是如此,实际上访问特定类型的变量只能在特定的地址访问,这就需要各个变量在空间上按一定的规则排列, 而不是简单地顺序排列,这就是内存对齐。 内存对齐的原因:转载 2017-03-21 09:48:22 · 249 阅读 · 0 评论 -
线程池测试
基于C++11的线程池本篇系C++ socket网络爬虫(1)的姊妹篇,写网络爬虫怎么能少得了线程呢 源代码地址:http://files.cnblogs.com/magicsoar/ThreadPoolProject.rar*需要C++11的支持,在vs2013下编译通过运行效果 背景在传统的收到任务即创建线转载 2017-03-12 13:33:52 · 679 阅读 · 0 评论 -
在C语言中,double、long、unsigned、int、char类型数据所占字节数
和机器字长及编译器有关系:所以,int,long int,short int的宽度都可能随编译器而异。但有几条铁定的原则(ANSI/ISO制订的): 1 sizeof(short int)<=sizeof(int) 2 sizeof(int)<=sizeof(long int) 3 short int至少应为16位(2字节) 4 long int至少应为32位。 unsigned 是转载 2017-03-22 16:04:22 · 616 阅读 · 0 评论 -
按位存取
实现紧凑存取,不是按一个字节一个字节地存取,而是按位存取。比如一个字节,我们可以存储8个bool信息,废话少说,直接分享代码(备注:里面的代码算法值得优化)。 //以下为函数定义 /***********************************************************************/ /* 函数作用:从buffer读一个位转载 2017-03-22 17:01:22 · 907 阅读 · 0 评论 -
Sizeof与Strlen的区别与联系
Sizeof与Strlen的区别与联系一、sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。 由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof转载 2017-03-23 18:12:24 · 214 阅读 · 0 评论 -
网络传输过程
介绍 常言道:欲练神功,必先练好基本功。之前做了一个关于IP路由,默认网关和掩码的问答贴,做完这个帖子觉得如果对网络知识点做一个系统的阐述,应该会很有帮助。本系列文章着重于讲解网络管理实际应用中常常涉及的重要知识点,尽量以实用为主。准备写的几个章节暂时有(可能会有增减):网络传输交换机VLAN与Trunk路由(上)路由(下)链路聚转载 2017-03-15 11:58:40 · 1325 阅读 · 0 评论 -
C++ tm 和 time_t 有关总结
【分解时间 & 日历时间】在标准C/C++中,我们可通过tm结构来获得日期和时间,struct tm结构体在time.h中的定义如下:[cpp] view plain copy print?#ifndef_TM_DEFINED structtm { int tm_sec; /* 秒 – 取值区间为[0,59] */转载 2017-05-24 17:46:50 · 2325 阅读 · 0 评论 -
值得推荐的C/C++框架和库 (真的很强大)
值得学习的C语言开源项目- 1. WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.cz/~cz2...转载 2019-10-02 08:47:07 · 419 阅读 · 0 评论