C/C++
文章平均质量分 84
fanzhang1990
这个作者很懒,什么都没留下…
展开
-
C语言中的 (void*)0 与 (void)0
C语言中的 (void*)0 与 (void)0 前几天看到一个宏, 它大概是这样的: #define assert_param(expr) ((expr) ? (void)0 : assert_failed((u8 *)FILE, LINE))代码的含意简单, 关键是那个 (void)0 的用法, 我还是第一次见到(别笑).我用 void 的时候, 有两种情况: 1.放到...转载 2019-11-16 19:04:58 · 401 阅读 · 0 评论 -
centos7源码编译安装lua:lua5.1升级lua5.3
文章转自这篇文章链接转载 2019-11-12 20:47:38 · 357 阅读 · 0 评论 -
c语言中realloc()函数解析
转发自https://blog.csdn.net/hackerain/article/details/7954006转载 2019-11-02 16:06:34 · 223 阅读 · 0 评论 -
C/C++指针小结
第一章。指针的概念指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。先声明几个指针放着做例子: 例一: (1)int *ptr; (2)char *ptr; (3)int **ptr转载 2012-11-17 22:59:09 · 632 阅读 · 0 评论 -
C++ 类的静态成员详细讲解
在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存。静态成员的定义或声明要加个关键static。静态成员可以通过双冒号来使用即::。在C++中类的静态成员变量和静态成员函数是个容易出错的地方,本文先通过几个例子来总结静态成员变量和成转载 2012-11-15 16:11:31 · 345 阅读 · 0 评论 -
浅谈C语言中的位段
位段(bit-field)是以位为单位来定义结构体(或联合体)中的成员变量所占的空间。含有位段的结构体(联合体)称为位段结构。采用位段结构既能够节省空间,又方便于操作。位段的定义格式为:type [var]: digits其中type只能为int,unsigned int,signed int三种类型(int型能不能表示负数视编译器而定,比如VC中int就默认是signed int,转载 2012-11-12 09:25:13 · 510 阅读 · 0 评论 -
C++explicit关键字
通过关键字explicit的作用,我么可以禁止“单参数构造函数”被用于自动型别转换。典型的例子便是群集类别,你可以将初始长度作为参数传给构造函数,一下举个例子class P{public:explicit P(int x):y(x),str("ssss"){ cout}P(const P &d){ y=d.y;str=new char原创 2012-09-24 20:55:01 · 1191 阅读 · 0 评论 -
C++开发必看 四种强制类型转换的总结
C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是:TYPE b = (TYPE)aC++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。 const_cast,字面上理解就是去const属性。 static_cast,命名上理解是静态类型转换。如int转换成char。 dynamic_cast,命名上理解是动态类型转换转载 2012-09-24 14:45:39 · 475 阅读 · 0 评论 -
Sizeof与Strlen的区别与联系
一、sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。 由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、结构或数组所占的转载 2012-10-14 00:06:06 · 326 阅读 · 0 评论 -
二叉树遍历 非递归 C++实现
二叉树的非递归遍历二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中,前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对来说要难一点。一.转载 2012-09-23 17:00:49 · 748 阅读 · 0 评论 -
C++ STL遇到的几个问题
1.vector与list的使用vector中ch原创 2014-08-03 22:13:24 · 605 阅读 · 0 评论 -
关于文件在内存中读写的问题
这两天遇到一个算不上buf原创 2014-09-17 14:26:34 · 1250 阅读 · 0 评论 -
编程面试的10大算法概念汇总
本文由 伯乐在线 - 敏敏 翻译。未经许可,禁止转载!英文出处:programcreek.com。欢迎加入翻译小组。以下是在编程面试中排名前10的算法相关的概念,我会通过一些简单的例子来阐述这些概念。由于完全掌握这些概念需要更多的努力,因此这份列表只是作为一个介绍。本文将从Java的角度看问题,包含下面的这些概念:1. 字符串2. 链表3. 树4. 图5. 排序转载 2015-01-28 16:39:44 · 835 阅读 · 0 评论 -
do {…} while (0) 的用途汇总(欢迎补充)
在一些Linux内核和其它的开源代码中,我们经常看到像下面这样的代码:do{…}while(0)该代码片段并非循环,这样想想似乎使用do…while没有任何意义,那么为什么还要使用它呢?实际上,do{…}while(0)的用途并不仅仅是优化你的代码。经过一系列的调研和探索,我们总结出它的一些用途如下。1. 帮助定义复杂的宏以避转载 2014-12-26 02:44:27 · 518 阅读 · 0 评论 -
C++位运算详解
位是数据存储的最小单位。在 计算机中的二进制数系统中,位,简记为b,也称为比特,每个0或1就是一个位(bit)。位操作详解我们先来看看位运算操作符:& (按位与)、| (按位或)、^ (按位异或)、~ (按位取反)、>> (按位右移)、1、&(按位与) 从概念上来讲,就是将参与运算的两个分量对应的每一位来做逻辑与运算,若两者都为真(等于1),则结果才为真(等于1)。否则都为转载 2015-07-26 22:02:04 · 365 阅读 · 0 评论 -
游戏开发中常用的设计模式
使用设计模式来提高程序库的重复利用性是大型程序项目开发必须的。但是在“四人帮”的设计模式概述中提到了23种标准设计模式,伍但难以记住,而且有些设计模式更多的适用于应用程序开发,对游戏项目引擎设计并没有很多的利用价值。根据经验,精挑细选后,笃志在这里记录一些自认为有利用价值的设计模式,以便之后自己设计时使用。一:观察者Observer观察者的设计意图和作用是: 它将对象与转载 2015-08-01 11:43:45 · 3718 阅读 · 0 评论 -
C++11多线程std::thread的简单使用
转自:http://blog.csdn.net/star530/article/details/24186783在cocos2dx 2.0时代,我们使用的是pthread库,是一套用户级线程库,被广泛地使用在跨平台应用上。但在cocos2dx 3.0中并未发现有pthread的支持文件,原来c++11中已经拥有了一个更好用的用于线程操作的类std::thread。cocos2dx 3.0的转载 2017-10-28 18:20:29 · 268 阅读 · 0 评论 -
内存对齐之学会计算结果
内存对齐的原理, 很多地方都有说,总结一句话: 为了寻址更快,以空间换时间。计算的时候遵循下面四个原则就行了。四个原则1.结构体变量的首地址能够被其最宽基本类型成员的大小所整除 2. 结构体每个成员相对于结构体首地址的偏移量都是当前成员大小的整数倍,如有需要编译器会在成员之间加上填充字节; 3. 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在...原创 2018-05-10 19:35:21 · 488 阅读 · 0 评论 -
C语言学习之指针的右左法则
C语言所有复杂的指针声明,都是由各种声明嵌套构成的。如何解读复杂指针声明呢?右左法则是一个既著名又常用的方法。不过,右左法则其实并不是C标 准里面的内容,它是从C标准的声明规定中归纳出来的方法。C标准的声明规则,是用来解决如何创建声明的,而右左法则是用来解决如何辩识一个声明的,两者可以说是相反的。右左法则的英文原文是这样说的: The right-left rule: Start reading...转载 2018-05-28 23:09:35 · 1132 阅读 · 0 评论 -
为什么构造函数不能声明为虚函数,析构函数可以声明为虚函数
构造函数不能声明为虚函数,析构函数可以声明为虚函数,而且有时是必须声明为虚函数。不建议在构造函数和析构函数里面调用虚函数。构造函数不能声明为虚函数的原因是:1 构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间确定实际类型的。而在构造一个对象时,由于对象还未构造成功。编译器无法知道对象的实际类型,是该类本身,还是该类的一个派生类,或是更深层次的派生类。无法确定。。转载 2012-09-20 23:50:22 · 943 阅读 · 0 评论 -
C++中引用(&)的用法和应用实例
对于习惯使用C进行开发的朋友们,在看到c++中出现的&符号,可能会犯迷糊,因为在C语言中这个符号表示了取地址符,但是在C++中它却有着不同的用途,掌握C++的&符号,是提高代码执行效率和增强代码质量的一个很好的办法。在c++学习提高篇(3)---隐式指针的文章中我详细介绍了在隐式指针&的用法,其实这两个概念是统一的。引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地转载 2012-09-15 12:56:21 · 416 阅读 · 0 评论 -
C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
学C++的时候,这几个输入函数弄的有点迷糊;这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行)1、cin 2、cin.get() 3、cin.getline() 4、getline() 5、gets() 6、getchar()附:cin.ignore();cin.get()//跳过一个字符,例如不转载 2012-08-06 14:55:19 · 492 阅读 · 0 评论 -
c++中的string常用函数用法
标准c++中string类函数介绍 注意不是CString之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C转载 2012-08-06 15:31:05 · 9040 阅读 · 0 评论 -
C++著名程序库的比较和学习经验
1、C++各大有名库的介绍——C++标准库 2、C++各大有名库的介绍——准标准库Boost 3、C++各大有名库的介绍——GUI 4、C++各大有名库的介绍——网络通信 5、C++各大有名库的介绍——XML 6、C++各大有名库的介绍——科学计算 7、C++各大有名库的介绍——游戏开发 8、C++各大有名库的介绍——线程 9、C++各大有名库的介绍——序列化转载 2012-08-11 16:19:38 · 1235 阅读 · 0 评论 -
给C++初学者的50个忠告
1.把C++当成一门新的语言学习(和C没啥关系!真的。); 2.看《Thinking In C++》,不要看《C++变成死相》; 3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看; 4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而转载 2012-08-11 16:18:13 · 590 阅读 · 0 评论 -
带有头结点,头指针真,尾指针的栈基本操作
#includeusing namespace std;typedef char elemtype;/*带有头结点,头指针真,尾指针的栈基本操作*/struct Stack{ elemtype data;struct Stack *next;};//*PStack;//PStack ptop;//PStack pbottom; //定义头指针,尾指针原创 2012-09-02 20:11:55 · 2284 阅读 · 0 评论 -
C++中的类模板详细讲述
参考了博客http://www.cnblogs.com/assemble8086/archive/2011/10/02/2198308.html转载 2012-09-04 09:19:26 · 398 阅读 · 0 评论 -
c++重载的总结
1.操作符重载对大部分符号成立,一下几种不能重载:" . ", " .* ", " ::", " ?: ", " sizeof "。2.操作符重载分为 成员函数重载 和 全局函数重载,(“ = ”,“ ( ) ”,“ [ ] ",” -> "只能是操作符成员函数重载)3.作为成员函数重载符,对于双目操作符重载函数只需一个形参,对于单目操作符重载函数不需要形参。4.作原创 2012-09-14 19:36:15 · 384 阅读 · 0 评论 -
static全局变量与普通的全局变量的区别
(1)static全局变量与普通的全局变量有什么区别?(2)static局部变量和普通局部变量有什么区别?(3)static函数与普通函数作用域有什么不同?(4)static函数与普通函数有什么区别?(1)static全局变量与普通的全局变量有什么区别?答:全局变量的说明之前再加以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也转载 2012-10-05 00:28:23 · 532 阅读 · 0 评论 -
经典c/c++面试试题
1.介绍一下STL,详细说明STL如何实现vector。Answer:STL (标准模版库,Standard Template Library)它由容器算法迭代器组成。STL有以下的一些优点:可以方便容易地实现搜索数据或对数据排序等一系列的算法;调试程序时更加安全和方便;即使是人们用STL在UNIX平台下写的代码你也可以很容易地理解(因为STL是跨平台的)。vector转载 2012-09-01 22:06:29 · 736 阅读 · 0 评论 -
C++拷贝构造函数(深拷贝,浅拷贝)
对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。#includeiostream>usingnamespace std;class CExample {private: int a;转载 2012-09-09 17:23:50 · 382 阅读 · 0 评论 -
C++中const用法总结
1. const修饰普通变量和指针const修饰变量,一般有两种写法:const TYPE value;TYPE const value;这两种写法在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。对于一个非指针的类型TYPE,无论怎么写,都是一个含义,即value只不可变。例如:constint n转载 2012-09-06 17:26:51 · 527 阅读 · 0 评论 -
详细介绍=====c++中的引用与指针的区别
c++中的引用与指针的区别★ 相同点:1. 都是地址的概念;指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。★ 区别:1. 指针是一个实体,而引用仅是个别名;2. 引用使用时无需解引用(*),指针需要解引用;3. 引用只能在定义时被初始化一次,之后不可变;指针可变;引用“从一而终” ^_^4. 引用没有 const,指针有 const,cons转载 2012-08-28 22:03:26 · 707 阅读 · 0 评论 -
带有头节点的单链表的逆置
#include#includeusing namespace std;/******************这是带有头节点的单链表的逆置××××××××××××××*/template class Type>struct P{ Type data; PType> *next;};template class Type>class p原创 2012-09-05 23:00:54 · 1283 阅读 · 0 评论 -
传递动态内存
当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道.这些往往会使人受尽折磨.所以如果你想深入C/C++编程,你必须静下心来,好好苦一番.现在我们将讨论C/C++里我认为哪一本书都没有完全说清楚,也是涉及概念细节最多,语言中最难的技术之一的动态内存的传递.并且在软件开发中很多专业人员并不能写出相关的合格的代码.【引入】 看下面的例子,这是我们在编写库函数或者项目内的共同函转载 2012-09-05 14:52:00 · 377 阅读 · 0 评论 -
C\C++的内存分配方式
可能有人对C或者C++的内存分配方式感到疑惑,小总了一下:1).C中内存分为4个区Ø 栈在函数体中定义的变量通常是在栈上。由编译器自动分配释放。Ø 堆用malloc, calloc, realloc等分配内存的函数分配得到的就是在堆上,一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收Ø 全局区(静转载 2012-07-24 20:34:51 · 527 阅读 · 0 评论