c/c++
guoxiaojie_415
本科计算机科学技术专业的学生,熟悉C、C++开发,研究生阶段开始学习linux系统运维,机器学习和数据挖掘。
展开
-
堆和栈的区别
堆和栈的区别(转过无数次的文章) 收藏 一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意转载 2009-11-01 10:23:00 · 639 阅读 · 0 评论 -
C++中静态变量、常量、静态整型常量、静态非整型常量、引用变量的初始化方法
C++中静态变量、常量、静态整型常量、静态非整型常量、引用变量的初始化方法原创 2015-11-08 14:51:21 · 4566 阅读 · 2 评论 -
程序员面试之循环与递归(四)
递归 递归调用的框架图 递归关注的因素:退出条件、递归的参数有哪些、递归的返回值、局部变量、全局变量、合适输出、会不会出现栈溢出。 递归调用一定包括:① 递归调用部分,② 递归停止条件,③ 递归返回值(注意:递归可以有多个结束条件) 递归的缺陷:效率低、递归的层次太深,容易导致栈溢出。原创 2015-10-11 20:37:55 · 816 阅读 · 0 评论 -
程序员面试笔试题目-素数、atoi、itoa、strstr、strcpy以及两个数交换(一)
程序员面试笔试题目-素数、atoi、itoa、strstr、strcpy以及两个数交换(一)原创 2015-09-16 10:00:35 · 719 阅读 · 0 评论 -
多目录时Makefile 的编写方法
多目录时Makefile 的编写方法1 make分中预定义变量表$* 不包含扩展名的目标文件名称。$+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。$< 第一个依赖文件的名称。$? 所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。$@原创 2016-08-14 20:20:51 · 16296 阅读 · 2 评论 -
C++ 和lua交互学习的三个例子
C++ 和 Lua 交互学习的三个例子原创 2017-04-22 15:53:06 · 1140 阅读 · 1 评论 -
C++11 中的左值、右值和将亡值
C++98 中表达式值的类型只有左值和右值两种类型,可以取到地址的表达式就是左值,不是左值的值就是右值,而C++11中将表达式的值类型划分成了lvalue(左值)、rvalue(右值)、prvalue(纯右值)、xvalue(将亡值)、gvalue(泛左值) 5种。下文从基本概念并结合实际的例子区分C++11中的表达式值类型。基本概念表达式表达式的定义 定义: 由运算符(o...原创 2018-04-08 11:11:33 · 1563 阅读 · 1 评论 -
C++11中的右值引用和移动语义
右值引用是C++11中新增的一种新的引用类型,它可以通过减少内存的重复申请、拷贝和释放,有效的提高C++程序的性能。理解什么是右值引用,首先要理解C++11中的lvalue、rvalue、xvalue,详情请参考:C++11 中的左值、右值和将亡值.右值引用和普通的非常量引用的唯一区别是,非常量引用(non-const reference)通常绑定一个非临时变量,而右值引用通常绑定一个临时变量...原创 2018-04-11 20:15:03 · 699 阅读 · 0 评论 -
C++11 中的std::function和std::bind
1. 可调用对象可调用对象有一下几种定义:是一个函数指针,参考 C++ 函数指针和函数类型;是一个具有operator()成员函数的类的对象;可被转换成函数指针的类对象;一个类成员函数指针;C++中可调用对象的虽然都有一个比较统一的操作形式,但是定义方法五花八门,这样就导致使用统一的方式保存可调用对象或者传递可调用对象时,会十分反锁。C++11中提供了std::functio...原创 2018-04-21 17:58:36 · 281 阅读 · 0 评论 -
C++11 中的std::function和std::bind
1. 可调用对象可调用对象有一下几种定义: - 是一个函数指针,参考 C++ 函数指针和函数类型; - 是一个具有operator()成员函数的类的对象; - 可被转换成函数指针的类对象; - 一个类成员函数指针;C++中可调用对象的虽然都有一个比较统一的操作形式,但是定义方法五花八门,这样就导致使用统一的方式保存可调用对象或者传递可调用对象时,会十分反锁。C++11中提供了std...原创 2018-04-12 23:05:11 · 363 阅读 · 0 评论 -
C++ 函数指针和函数类型
函数指针和函数类型函数指针指向的是函数而非对象。和其他指针类型一样,函数指针指向某种特定类型。函数类型由它的返回值和参数类型决定,与函数名无关。bool length_compare(const string &, const string &);上述函数类型是:bool (const string &, const string &); 上...原创 2018-04-12 23:06:09 · 4643 阅读 · 0 评论 -
C++11 std::move和std::forward
下文先从C++11引入的几个规则,如引用折叠、右值引用的特殊类型推断规则、static_cast的扩展功能说起,然后通过例子解析std::move和std::forward的推导解析过程,说明std::move和std::forward本质就是一个转换函数,std::move执行到右值的无条件转换,std::forward执行到右值的有条件转换,在参数都是右值时,二者就是等价的。其实std::move和std::fo原创 2018-04-11 20:16:09 · 998 阅读 · 0 评论 -
一个关于二维指针的问题
一个关于二维指针的问题原创 2015-11-08 14:52:46 · 547 阅读 · 0 评论 -
C++中的类型转换之 const_cast static_cast dynamic_cast reinterpret_cast
C++ 中的类型转换之 const_cast static_cast dynamic_cast reinterpret_cast原创 2015-10-07 11:00:32 · 896 阅读 · 0 评论 -
C/C++面试常见关键字总结(二)
1、对sizeof的理解2、对static的理解3、对volatile关键字的理解(适用于嵌入式开发或者高并发应用服务器的开发)4、关于数据类型转换的面试题目5、++运算符6、逻辑运算符的短路问题7、对const关键字的理解原创 2015-08-26 14:39:50 · 1599 阅读 · 0 评论 -
MFC中添加自定义消息
MFC中添加消息的方法1,在你要发送消息的窗口定义一个自定义消息,#define WM_MESSAGE WM_USER+ID2,然后在发送消息的窗口调用SendMessage(),,或者PostMessage(),发送消息,(这两个函数的区别可以查看msdn)3,在接收消息的窗口相关联的类的头文件中声明一个消息处理函数如:afx_msg void OnPaint();4,在.c原创 2009-11-26 17:20:00 · 715 阅读 · 0 评论 -
MFC中定义全局变量的方法
在MFC中全局变量的定义方法1,在CMyApp.h文件中定义你要定义的全局变量。2,在Inistance()函数中进行初始化。3,在以下的所有文件中只要加上extern CMyApp theApp;你就可以通过theApp调用你定义的全局变量了。原创 2009-11-26 17:11:00 · 1014 阅读 · 0 评论 -
"Cannot declare member function ...to have static linkage"错误
基本的语法错误,郁闷了我半天,相关的资料可以参考:http://cplusplus.syntaxerrors.info/index.php?title=Cannot_declare_member_function_%E2%80%98static_int_Foo::bar()%E2%80%99_to_have_static_linkage 英文解释:if you declare a me原创 2010-03-10 12:08:00 · 16559 阅读 · 1 评论 -
Qt4 设置应用程序图标
设置qt应用程序图标的步骤: 一:用文本文件创建一个filename.rc文件。二:在filename.rc文件中加入 IDI_ICON1 ICON DISCARDABLE "你的图标名称".三:把你的图标和filename.rc文件拷贝到你的工程目录下面、四:在工程.pro文件中加入 RC_FILE = filename.rc五:在mian原创 2010-03-11 11:37:00 · 1846 阅读 · 2 评论 -
使用非静态函数做为线程函数
大家知道,pthread_create()函数的线程函数必须是静态的函数,以标准的__cdecl的方式调用的,而C++的成员函数是以__thiscall的方式调用的,相当于一个普通函数有一个默认的const ClassType* this参数。 为数据封装的需要,我常常把线程函数封装在一个类的内部,定义一个类的私有静态成员函数来作为pthread的线程函数,通常如下:cl转载 2010-04-20 17:57:00 · 2229 阅读 · 0 评论 -
Windows 下多线程编程
一、CreateThread()和 WaitForSignalObject()的用法#include "windows.h"#include "stdio.h"void Scan(char* str){ printf("%s",str); Sleep(4000);}void main(){ char* s="NBA YAO YEAR!\n"; H原创 2012-03-06 17:08:50 · 916 阅读 · 0 评论 -
win32下文件的遍历:递归遍历和非递归遍历
一、win32下文件的递归遍历【深度遍历】递归遍历Demo如下:void FileSearch(char* searchDir){ char dirInfo[BUF]; WIN32_FIND_DATA fd; strcpy(dirInfo,searchDir); strcat(dirInfo,"\\*.*");//查询文件地址 strcpy(dirInfo+str原创 2012-03-06 16:45:53 · 1311 阅读 · 0 评论 -
do...while(0)的妙用
在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。1. do...while(0)消除goto语句。 通常,如果在一个转载 2012-03-07 11:05:17 · 507 阅读 · 0 评论 -
临界区,互斥量,信号量,事件的区别(线程同步)
四种进程或线程同步互斥的控制方法1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2、互斥量:为协调共同对一个共享资源的单独访问而设计的。 3、信号量:为控制一个具有有限数量用户资源而设计。 4、事 件:用来通知线程有一些事件已发生,从而启动后继任务的开始。 临界区(Critical Section) 保证在某一时刻只有一原创 2012-03-08 10:06:41 · 878 阅读 · 0 评论 -
如何阅读别人的代码---c、c++程序学习
[ C/C++ ] 程序学习--如何阅读别人的代码++++++++++++第一章: 导论++++++++++++1.要养成一个习惯, 经常花时间阅读别人编写的高品质代码.2.要有选择地阅读代码, 同时, 还要有自己的目标. 您是想学习新的模式|编码风格|还是满足某些需求的方法.3.要注意并重视代码中特殊的非功能性需求, 这些需转载 2012-03-21 08:23:33 · 10939 阅读 · 2 评论 -
What are TCHAR, WCHAR, LPSTR, LPWSTR, LPCTSTR (etc.)?
Many C++ Windows programmers get confused over what bizarre identifiers like TCHAR, LPCTSTR are. In this article, I would attempt by best to clear out the fog.In general, a character can be repres转载 2012-07-11 15:41:13 · 1200 阅读 · 0 评论 -
C++之 构造函数 拷贝构造函数 析构函数 赋值操作
C++之 构造函数 拷贝构造函数 析构函数 赋值操作原创 2015-10-17 15:17:16 · 895 阅读 · 0 评论 -
C++笔试中常见的小程序
判断机器是大顶端还是小顶端判断对应的序列是否是正确的出栈序列判断一个数是否为素数实现string类中默认的4个函数原创 2015-11-03 19:26:25 · 809 阅读 · 0 评论 -
C++11中std::reference_wrapper的理解
std::reference_wrapperreference_wrapper 将引用包装成一个对象,即引用的包装器;reference_wrapper 是一个引用包裹器,可以包裹一个指向对象或者指向函数指针的引用,既可以通过拷贝构造,也可以通过赋值构造;std::reference_wrapper的实例是一个对象,但是会隐式的转换为T&,因此std::reference_wra...原创 2018-04-21 17:59:43 · 10694 阅读 · 0 评论