C/C++/JAVA
ch3rry
每天早上醒来,看见你和阳光都在,这就是我想要的未来。
展开
-
dpkg命令的用法
dpkg是Debian package的简写,为“Debian”操作系统专门开发的套件管理系统,用于软件的安装,更新和移除。所有源自"Debian"的Linux的发行版都使用dpkg,例如"Ubuntu" 安装软件: 命令:dpkg -i <.deb file name>列出与该包先关联的文件: 命令:dpkg -L package 安装完包后,可以用此命令查看软件安装到什么地方显示包的版本: 命令:dpkg -l package移除软件(保留...原创 2021-01-04 09:02:39 · 302 阅读 · 2 评论 -
C语言位操作
《4.2.C语言位操作》第一部分、章节目录4.2.1.常用位操作符4.2.2.位与位或位异或在操作寄存器时的特殊作用4.2.3.如何用位运算构建特定二进制数4.2.4.位运算实战演练14.2.5.位运算实战演练24.2.6.技术升级:用宏定义来完成位运算第二部分、章节介绍4.2.1.常用位操作符本节讲解C语言中常用的位操作符,如位与、位或、位取反、位异或、左...原创 2020-01-09 19:34:44 · 543 阅读 · 0 评论 -
彻底搞定c指针
第一篇变量的内存实质一.先来理解C语言中变量的实质要理解C指针,我认为一定要理解C中“变量”的存储实质,所以我就从“变量”这个东西开始讲起吧!先来理解理解内存空间吧!请看下图:内存地址→678910111213----------------------...原创 2019-12-04 16:04:31 · 231 阅读 · 0 评论 -
几个C语言IO读写数据事例
int fgetc(FILE *stream)int fputc(int ch,FILE *stream)fgetc( )函数从输入流的当前位置返回一个字符,并将文件指针指示器移到下一个字符处,如果已到文件尾,函数返回EOF,此时表示本次操作结束,若读写文件完成,则应关闭文件。fputc()函数完成将字符c h的值写入所指定的流文件的当前位置处,并将文件指针后移一位。fputc()函数的返回值...原创 2019-12-04 15:30:00 · 318 阅读 · 0 评论 -
两个栈来实现一个队列的C++代码
利用两个栈来实现一个队列, 这个问题很常见。 最关键的是要有好的思路, 至于实现, 那是很简单的事情了。 在本文中, 也想说说自己的思路, 但是, 我觉得用代码来表述思路更符合我的习惯, 也是我的菜, 所以, 仅仅给出代码。 如有需要, 大家可以根据代码来理解思路。#include <iostream>#include <stack>using n...原创 2019-12-03 19:16:48 · 144 阅读 · 0 评论 -
C字符串——库函数系列(strlen、strcat、strcpy、strcmp)
一定义:字符串:字符串是由零个或者多个字符组成的有限串行;子串:字符串中任意个连续的字符组成的子序列,并规定空串是任意串的子串,字符串本身也是子串之一;“abcdefg”,”abc“就是其子串,但是“ade”不属于子串范围。子序列:不要求字符连续,但是其顺序与其在主串中相一致;上例中,“abc”与“ade”都属于子序列范围;二:C风格字符串包括两种:1)字符串常量---以双引号...原创 2019-11-05 19:26:41 · 265 阅读 · 0 评论 -
C语言常用库函数(含详细用法)
一、数学函数调用数学函数时,要求在源文件中包下以下命令行:#include <math.h> 函数原型说明 功能 返回值 说明 int abs( int x) 求整数x的绝对值 计算结果 dou...转载 2019-10-28 17:19:10 · 416 阅读 · 0 评论 -
#pragma pack(1) & #pragma pack
#pragma pack(push,1)与#pragma pack(1)的区别这是给编译器用的参数设置,有关结构体字节对齐方式设置,#pragma pack是指定数据在内存中的对齐方式。#pragma pack (n) 作用:C编译器将按照n个字节对齐。#pragma pack ()作用:取消自定义字节对齐方式。#pragma...原创 2016-05-19 19:41:00 · 1001 阅读 · 0 评论 -
malloc()和free()的原理及实现
在C语言中只能通过malloc()和其派生的函数进行动态的申请内存,而实现的根本是通过系统调用实现的(在linux下是通过sbrk()系统调用实现)。malloc()到底从哪里得到了内存空间?答案是从堆里面获得空间。也就是说函数返回的指针是指向堆里面的一块内存。操作系统中有一个记录空闲内存地址的链表。当操作系统收到程序的申请时,就会遍历该链表,然后就寻找第一个空间大于所申请空间的堆结点,然后就...原创 2019-10-14 16:52:06 · 371 阅读 · 0 评论 -
win32项目windows窗体程序 向导生成代码解析
目录:1.Win32项目的windows窗体程序的向导生成了如下代码2.手工生成代码如下3.当消息队列中没有消息需要处理,我们可以利用这段时间处理我们自己的任务1.Win32项目的windows窗体程序的向导生成了如下代码:[cpp] view plaincopy// Timer.cpp : 定义应用程序的入口点。原创 2015-09-24 14:47:05 · 660 阅读 · 0 评论 -
酷壳陈皓:如何学好C++语言
摘要:导读: 昨天写了一篇如何学好C语言,就有人回复问我如何学好C++,所以,我把我个人的一些学习经验写在这里,希望对大家有用。首先,因为如何学好C语言中谈到了算法和系统,所以这里就导读:作者之前发布了《如何学习C语言》,现介绍如何学习C++的相关建议。昨天写了一篇如何学好C语言,就有人回复问我如何学好C++,所以,我把我个人的一些学习经验写在这里,希望对大家有用。首先,因为如何学原创 2015-09-16 19:54:57 · 682 阅读 · 0 评论 -
mciSendString用法
使用MCI API,源文件中需要包含头文件 Mmsystem.h,在Project->Settings->Link->Object/libray module中加入库 Winmm.lib。 VS2008在源文件加上#include "mmsystem.h" #pragma comment(lib,"winmm.lib")1、MCI简介 MCI(Media Control原创 2015-09-10 13:59:47 · 12196 阅读 · 0 评论 -
printf详解
来自《CSDN 社区电子杂志——C/C++杂志》 http://emag.csdn.net 2005 年1 月 总第1 期 - 93printf可能是许多程序员在开始学习C语言时接触到的第二个函数(我猜第一个是main),说起来,自然是老朋友了,可是,你对这个老朋友了解多吗?你对它的那个孪生兄弟sprintf了解多吗?在将各种类型的数据构造成字符串时,sprintf的强大功能很少原创 2015-09-08 14:28:19 · 489 阅读 · 0 评论 -
PC-Lint详解
PC-Lint是一款C/C++软件代码静态分析工具,不仅可以检查一般的语法错误,还可以检查潜在的错误,比如数组访问越界、内存泄漏、使用未初始化变量、使用空指针等。在单元测试前使用PC-Lint来检查代码,可以提前发现程序中的潜在的错误,提高代码的质量。本文主要从两个方面介绍PC-lint,第一部分是在与不同的工具安装集成,第二部分是PC-lint的使用方法。1. 安装PC-lint及如原创 2015-09-01 15:43:09 · 3882 阅读 · 0 评论 -
Google软件测试之道
三种角色:(1)SWE(Software engineer):是一个传统上的开发角色,他们的工作是实现最终用户所使用的功能代码。SWE需要编写与测试代码。包括测试驱动的设计、单元测试、参与构建各种大小规模的测试等。(2) SET(Software engineer in test):也是一个开发角色,只是工作重心在可测试性和通用测试基础框架上。更加关注质量的提升和测试覆盖率的增加。SET写原创 2015-08-27 11:02:58 · 769 阅读 · 0 评论 -
WIN32控件使用大全
CTabCtrl使用方法:http://www.codeguru.com/cpp/controls/controls/tabcontrols/article.php/c5239/按钮CButton使用方法:http使用方法://www.vckbase.com/document/viewdoc/?id=1414菜单:http://www.vckbase.com/document/转载 2015-08-25 13:51:34 · 2254 阅读 · 0 评论 -
MFC工程去掉#include <windows.h>
【原因分析篇章】如果在MFC工程中#include ,那么会有以下编译错误(因为afxwin.h文件中包含了afx.h,afx.h文件中包含了afxver_.h,afxver_.h中包含了afxv_w32.h,而afxv_w32.h中包含了windows.h,请看以下分析): compile error: c:\program files\microsoft原创 2015-08-20 10:00:54 · 2718 阅读 · 0 评论 -
开源项目(VC++,MFC)
简介This article lists of some of the best Open Source projects written in VC++/MFC.本文列出了最好的开放源码在VC + + / MFC编写的一些项目。 Background背景CodeProject has the best source code repository for VC++ devel原创 2015-08-14 15:28:06 · 2389 阅读 · 0 评论 -
VC 文档+视图 详细分析
深入浅出MFC文档/视图架构之基本概念引言 MFC引入了"文档/视图"结构的概念,理解这个结构是编写基于MFC编写复杂Visual C++程序的关键。"文档/视图"中主要涉及到四种类: (1)文档模板:class CDocTemplate; // template for document creationclass CSingleDocTemp转载 2015-09-26 09:50:56 · 2048 阅读 · 2 评论 -
error C4996: 'sprintf': This function or variable may be unsafe.Consider using sprintf_s instead.
VS选项Project | Configuration Properties | C/C++ | Preprocessor | Preprocessor Definitions 添加_CRT_SECURE_NO_WARNINGS原创 2015-09-21 16:31:44 · 1827 阅读 · 0 评论 -
sprintf举例说明
最近需要把图形的坐标转换为字符来检验图形坐标的正确与否,所以较多的用到了sprintf()函数。例如: int sign=100; char s1[10]; sprintf(s1,"%d",sign); pDC->TextOut(0,0,s1);这里就把sprintf()函数的用法总结一下。 int sprintf( char *buffer, const c原创 2015-09-08 14:32:41 · 449 阅读 · 0 评论 -
memset总结
前段发现一个问题,程序总是在某个dynamic_cast进行动态转换时出异常,查了半天才发现问题原来是出在memset的使用上,虽然问题本身显而易见,但当处于几十万行代码量级中时,就变得不太那么容易定位了。本文归纳了下使用memset几个需要注意的地方:1. memset是以字节为单位,初始化内存块。当初始化一个字节单位的数组时,可以用memset把每个数组单元初始化成任何你想原创 2015-08-27 11:07:13 · 342 阅读 · 0 评论 -
Google C++测试框架系列:入门
原始链接:V1_6_Primer注GTest或者Google Test: Google的C++测试框架。Test Fixtures: 这个词实在找不到对应的中文。Bug: 太常用了,不翻译。House keeping chores: 家常事务。指非核心的编码工作,比如测试代码的assert, log以及用例管理等工作。set-up/tear-down: 指运行测试前的准备和之后的清理工原创 2015-08-27 11:05:44 · 318 阅读 · 0 评论 -
GDI+编程
GDI+(Graphics Device Interface Plus图形设备接口加)是Windows XP和Windows Server 2003操作系统的子系统,也是.NET框架的重要组成部分,负责在屏幕和打印机上绘制图形图像和显示信息。GDI+不但在功能上比GDI 要强大很多,而且在代码编写方面也更简单,因此会很快成为Windows图形图像程序开发的首选。一、GDI+的特点和新增原创 2015-08-25 09:23:35 · 1754 阅读 · 0 评论 -
VC++新建工程和调试
一、实验目的1. 初步学会使用Visual C++集成开发环境(IDE)。①进入和退出;②菜单、工具栏的使用;③用户窗口区的划分:workspace, scource file, message。2. 初步了解调试程序方法。二、实验内容1. 范例:Visual C++控制台应用程序设计步骤。作为学习面向对象的C++的第一步,学习的重点是算法,必须避免用户图形原创 2015-08-19 20:12:54 · 860 阅读 · 0 评论 -
免费好用的DiffMerge工具大总结
总结:比较下来:diffmerge和P4merge最好用,kdiff比较专业些,支持自动merge。一 csdiff下载:http://www.componentsoftware.com/Products/CSDiff/index.htm特点:1)免费;2)需要安装;3)文件和文件夹比较;4)支持源代码,html和word文档;截图:1)初始界面2)folder比较原创 2015-08-18 13:40:57 · 14677 阅读 · 0 评论 -
#pragma 预处理指令剖析
#pragma 预处理指令详解 在所有的预处理指令中,#pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 其格式一般为: #pr原创 2015-08-14 10:07:10 · 347 阅读 · 0 评论 -
C语言中变量名的命名规则
一、简介1、严格采用阶梯层次组织程序代码:各层次缩进的分格采用VC的缺省风格,即每层次缩进为4格,括号位于下一行。要求相匹配的大括号在同一列,对继行则要求再缩进4格。例如:2、提示信息字符串的位置在程序中需要给出的提示字符串,为了支持多种语言的开发,除了一些给调试用的临时信息外,其他所有的提示信息必须定义在资源中。3、对变量的定义,尽量位于函数的开始位置。原创 2015-10-23 16:36:49 · 2874 阅读 · 0 评论 -
sprintf,你知道多少?
sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。sprintf 是个变参函数,定义如下: int sprintf( char *buffer, const char *format [, argument] ... )转载 2015-09-17 11:22:45 · 307 阅读 · 0 评论 -
酷壳陈皓:如何学好C语言
我相信,这可能是很多朋友的问题,我以前也有这样的感觉,编程编到一定的时候,发现能力到了瓶颈,既不深,也不扎实,半吊子。比如:你长期地使用Java和.NET ,这些有虚拟机的语言对于开发便利是便利,但是对于程序员来说可能并不太好,原因有两个:1.虚拟机屏蔽了操作系统的系统调用,以及很多底层机制。2.大量的封装好的类库也屏蔽了很多实现细节。一段时间后,你会发现你知其然,不知所以然。。我以前原创 2015-09-16 19:57:44 · 372 阅读 · 0 评论 -
QT和MFC
我曾经使用过QT和MFC来开发过软件,我想和大家分享我使用他们时所体会的不同之处。我并非一个职业作家,这篇文章可能看起来不如专业的杂志和网站上的那么条理清晰。但是,我在这里是用我自己的语言来表达我自己的经验,希望能和你分享。英语比不是我的母语,所以可能会有一些用词古怪,词句错误之处,请发信给我,我可以改正他们。本文不想假装客观公正,我只想表述我使用的经验。文中不会逐条的列举Qt和MFC各自原创 2015-08-28 15:06:15 · 676 阅读 · 0 评论 -
windows中相对路径和绝对路径
绝对路径:是从盘符开始的路径,形如C:\windows\system32\cmd.exe相对路径:是从当前路径开始的路径,假如当前路径为C:\windows要描述上述路径,只需输入system32\cmd.exe实际上,严格的相对路径写法应为.\system32\cmd.exe其中,.表示当前路径,在通道情况下可以省略,只有在特殊的情况下不能省略。假如当前路径为c:原创 2015-08-25 21:07:03 · 11493 阅读 · 0 评论 -
C语言经典著作
基础篇1.《写给大家看的C语言书(第2版)》原书名: Absolute Beginner's Guide to C (2nd Edition) 原出版社: Sams 作者: (美)Greg Perry [作译者介绍] 译者: 谢晓钢 刘艳娟 丛书名: 图灵程序设计丛书 C/C++系列 出版社:人民邮电出版社 ISBN:9787115216359上架时间:20原创 2015-08-13 20:31:05 · 645 阅读 · 0 评论 -
堆(heap)和栈(stack)的区别
数据结构编译器windowsbyte存储扩展堆(heap)和栈(stack)有什么区别?简单的可以理解为:heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stac原创 2015-08-12 15:16:40 · 329 阅读 · 0 评论 -
C++内存块置0:memset,ZeroMemory和SecurZeroMemory
本文对应Windows下编程环境:简而言之:一般情况,如初始化内存块的时候,用ZeroMemory。销毁内存块中储敏感数据时或者释放存有敏感数据(比如密码,密钥等)的内存块前应使用使用SecurZeroMemory。如无特殊原因不使用“={ 0 }”。使用memset函数将内存块置0是完全没有问题。memset的好处是跨平台比较容易,可是C/C++跨平台就是梦魇。在使用memset的时原创 2015-10-20 11:00:21 · 440 阅读 · 0 评论 -
C++设计模式
C++设计模式之Adapter一、功能 将一个类的接口转换成客户希望的另外一个接口,解决两个已有接口之间不匹配的问题。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 二、结构图 (1)class adapter (2)object adapter 三、实现 和其他很多模式一样,学习设计模式的重点是学习每原创 2015-10-14 14:03:51 · 322 阅读 · 0 评论 -
10个VisualStudio原生开发的调试技巧
英文原文:10 MoreVisual Studio Debugging Tips for Native Development我最近遇到了一篇Ivan Shcherbakov写的名为10+个关于Visual Studio的强大调试技巧的文章。然而这篇文章只是提供了一些相对基本的关于Visual Studio的调试技巧。这里至少还有一些同样有用的其他技巧。因此,我整理了一些工原创 2015-09-16 20:07:22 · 368 阅读 · 0 评论 -
关于CString(互动百科)
CString - 前言 CString位于头文件afx.h中。这篇文章就来讨论这些技巧。使用CString可以让你对字符串的操作更加直截了当。这篇文章不是CString的完全手册,但囊括了大部分常见基本问题。这篇文章包括以下内容:CString 对象的连接格式化字符串(包括 int 型转化为 CString)CString类的成员函数CString 型转化原创 2015-08-20 14:02:24 · 463 阅读 · 0 评论 -
MFC的CRichEditCtrl控件,用了函数ReplaceSel(str);怎样才能取消全部选中?
BOOL CRichEditTestDlg::OnInitDialog(){...... //其他初始化代码CString str;str=_T("hello_1\nhello_2");m_richedit.SetSel(-1, -1); //在RichEditTestDlg.h里面CRichEditCtrl m_richedit;m_richedit.Repl原创 2015-08-13 21:00:09 · 1451 阅读 · 0 评论 -
WaitForSingleObject函数剖析
因为用户模式的线程同步机制效率高,所以需要考虑线程同步问题时,应首先考虑用户模式的线程同步方法;然用户模式的线程同步有限制,多进程间线程同步,用户模式的线程同步方法无能为力,这时只能考虑内核模式。 Windows提供了许多内核对象来实现线程的同步。于线程同步而言,这些内核对象有两个非常重要的状态:“已通知”状态,“未通知”状态。Windows提供了几种内核对象可以处于已通知状态和未通知状态:原创 2015-08-11 19:59:56 · 594 阅读 · 0 评论