![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
snail0428
Talk is cheap, show me the code!
展开
-
sprintf和sscanf的用法
1、 sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。 sprintf 是个变参函数,定义如下: int sprintf( char *buffer, const char *format [, argument] ... ); 除了前两个参转载 2016-07-23 09:19:21 · 266 阅读 · 0 评论 -
linux下socketopt用法
功能描述: 获取或者设置与某个套接字关联的选项。选项可能存在于多层协议中,它们总会出现在最上面的套接字层。当操作套接字选项时,选项位于的层和选项的名称必须给出。为了操作套接字层的选项,应该 将层的值指定为SOL_SOCKET。为了操作其它层的选项,控制选项的合适协议号必须给出。例如,为了表示一个选项由TCP协议解析,层应该设定为协议 号TCP。用法:#incl转载 2016-09-12 10:15:48 · 728 阅读 · 0 评论 -
C++ 11 新特性之容器相关特性
这是C++11新特性介绍的第四部分,涉及到C++11这次更新中与容器有关的新特性。不想看toy code的读者可以直接拉到文章最后看这部分的总结。cbegin和cend原来的begin和end返回的iterator是否是常量取决于对应的容器类型,但是有时,即使容器不是常量类型,我们也希望获得一个const_iterator,以避免不必要的修改行为。C++11新标准中提供了c转载 2016-08-21 15:23:27 · 391 阅读 · 1 评论 -
C++ 实现银行排队服务模拟
转自码农网:http://www.codeceo.com/article/bank-queuing-services-model.html教程简介:使用 C++对银行排队服务进行模拟,以事件驱动为核心思想,手动实现模板链式队列、随机数产生器等内容,进而学习概率编程等知识。作为可选进阶,这个模型同时还能稍加修改的应用到 CPU 资源争夺模型中。一、概述实验所需的前置知识转载 2016-08-23 00:09:38 · 8164 阅读 · 5 评论 -
SHA1算法实现及详解
1 SHA1算法简介安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程转载 2016-09-01 16:58:22 · 800 阅读 · 0 评论 -
大数四则运算的C++实现
[摘要] 大数运算不仅仅运用在密码学中,还运用在一些物理学研究、生物学,化学等科目中。大数运算,意味着参加的值和计算结果通常是以上百位数,上千位数以及更大长度之间的整数运算。例如大家所熟知圆周率π的值,在一般的数值计算中用到圆周率的不须要多大的精度,但在计算一些星球或是星系上的体积面积时便显的误差很大了,这就要求π值计算的精度达到几百万位甚至更高,才能缩小误差。人工计算是远远不行了,而且本身误差也转载 2016-08-10 21:49:02 · 4190 阅读 · 0 评论 -
static_cast, dynamic_cast, const_cast探讨
首先回顾一下C++类型转换:C++类型转换分为:隐式类型转换和显式类型转换第1部分. 隐式类型转换又称为“标准转换”,包括以下几种情况:1) 算术转换(Arithmetic conversion) : 在混合类型的算术表达式中, 最宽的数据类型成为目标转换类型。 int ival = 3;double dval = 3.14159;转载 2016-09-02 14:38:00 · 140 阅读 · 0 评论 -
char/unsigned char/signed char之间的区别
char 和 unsigned char是无符号的两者都作为字符用的话是没有区别的,但当整数用时有区别: char 整数范围为-128到127( 0x80__0x7F), 而unsigned char 整数范围为0到255( 0__0xFF )多数情况下,char ,signed char 、unsigned char 类型的数据具有相同的特性然而当你把一个单字节的数赋给一个大整型转载 2016-09-05 16:30:45 · 1584 阅读 · 0 评论 -
浅析C语言中printf(),sprintf(),scanf(),sscanf()的用法和区别
printf语法: #include int printf( const char *format, ... );printf()函数根据format(格式)给出的格式打印输出到STDOUT(标准输出)和其它参数中。返回值是输出的字符数量。sprintf语法: #include int sprintf( char *buffer, const char *for转载 2016-08-14 23:39:53 · 538 阅读 · 0 评论 -
单链表的反转(递归与非递归方式)
定义链表结构struct ListNode{ int val; ListNode *next; ListNode(int v) : val(v), next(NULL) {}};非递归反转单链表ListNode* reverse(ListNode *root){ if (root == NULL || root->next ==转载 2016-09-19 11:26:55 · 270 阅读 · 0 评论 -
用new实现二位数组的几种方法
定义二维数组char array[x][y]; 1.只定义个一维的就可以了 char *array; array = new char[x*y]; 访问的时候*(array+i*y+j)表示array[i][j] 2.定义一个二维数组 char **array1 array1 = new char *[x]; for(i=0;i<x;++i) array1[i] =转载 2016-09-07 14:38:28 · 1857 阅读 · 0 评论 -
C语言中内存分配
在任何程序设计环境及语言中,内存管理都十分重要。在目前的计算机系统或嵌入式系统中,内存资源仍然是有限的。因此在程序设计中,有效地管理内存资源是程序员首先考虑的问题。第1节主要介绍内存管理基本概念,重点介绍C程序中内存的分配,以及C语言编译后的可执行程序的存储结构和运行结构,同时还介绍了堆空间和栈空间的用途及区别。第2节主要介绍C语言中内存分配及释放函数、函数的功能,以及如何调用这些转载 2016-09-24 16:15:06 · 274 阅读 · 0 评论 -
C++11新特性之智能指针
转载自码农网:http://www.codeceo.com/article/cpp-11-smart-pointer.html?ref=myread更多关于C++11新特性文章点击原文链接内的相关文章这是C++11新特性介绍的第五部分,涉及到智能指针的相关内容(shared_ptr, unique_ptr, weak_ptr)。不想看toy code的读者可以直转载 2016-08-21 14:48:35 · 196 阅读 · 0 评论 -
C++11的auto和decltype关键字
今天要介绍C++11中两个重要的关键字,即auto和decltype。实际上在C++98中,已经就有了auto关键字,只不过在C++98中auto表示的是临时变量的语义,而在C++11中auto表示自动类型推导,如下auto关键字可以从表达式中推导出变量的类型,这样就大大简化了编程人员的工作。而且auto是在编译时对变量进行了类型推导,所以不会对程序的效率造成影响,另外auto也不转载 2016-08-21 14:14:58 · 301 阅读 · 0 评论 -
float数据在内存中的存储方法
浮点型变量在计算机内存中占用4字节(Byte),即32-bit。遵循IEEE-754格式标准。一个浮点数由2部分组成:底数m 和 指数e。 ±mantissa × 2exponent (注意,公式中的mantissa 和 exponent使用二进制表示)底数部分 使用2进制数来表示此浮点数的实际值。指数部分 占用8-bit的二进制转载 2016-07-30 09:37:37 · 237 阅读 · 0 评论 -
cout标准输出流常用控制格式
使用这些格式需要声明包含long flags( ) const 返回当前的格式标志。 long flays(long newflag) 设置格式标志为newflag,返回旧的格式标志。 long setf(long bits) 设置指定的格式标志位,返回旧的格式标志。 long setf(long bits,long field)将field指定的格式标志位置为bits,返回旧转载 2016-07-31 12:59:10 · 2821 阅读 · 0 评论 -
C++ bitset类的使用与简介
原文:http://blog.163.com/lixiangqiu_9202/blog/static/53575037201251121331412/有些程序要处理二进制位的有序集,每个位可能包含的是0(关)或1(开)的值。位是用来保存一组项或条件的yes/no信息(有时也称标志)的简洁方法。标准库提供了bitset类使得处理位集合更容易一些。要使用bitset类就必须要包含相关的头文件。转载 2016-08-15 22:00:02 · 261 阅读 · 0 评论 -
C++11 lambda 表达式解析
C++11 新增了很多特性,lambda 表达式是其中之一,如果你想了解的 C++11 完整特性,建议去这里,这里,这里,还有这里看看。很多语言都提供了 lambda 表达式,如 Python,Java 8。lambda 表达式可以方便地构造匿名函数,如果你的代码里面存在大量的小函数,而这些函数一般只被调用一次,那么不妨将他们重构成 lambda 表达式。C++11 的 lambd转载 2016-08-27 16:14:25 · 323 阅读 · 0 评论 -
C++11中的std::function
看看这段代码先来看看下面这两行代码:std::functionvoid(EventKeyboard::KeyCode, Event*)> onKeyPressed;std::functionvoid(EventKeyboard::KeyCode, Event*)> onKeyReleased;这两行代码是从Cocos2d-x中摘出来的,重点是这两行代码的定义啊。std::fu转载 2016-08-27 17:01:31 · 350 阅读 · 0 评论 -
C++11中的std::bind
看看这段代码这几天学习Cocos2d-x,看到了以下的一段代码:// new callbacks based on C++11#define CC_CALLBACK_0(__selector__,__target__, ...) std::bind(&__selector__,__target__, ##__VA_ARGS__)#define CC_CALLBACK_1(__se转载 2016-08-27 17:15:44 · 334 阅读 · 0 评论 -
C++箴言:避免析构函数调用虚函数
如果你已经从另外一种语言如C#或者Java转向了C++,你会觉得,避免在类的构造函数或者析构函数中调用虚函数这一原则有点违背直觉。但是在C++中,违反这个原则会给你带来难以预料的后果和无尽的烦恼。 我想以重复本文的主题开篇:不要在类的构造或者析构函数中调用虚函数,因为这种调用不会如你所愿,即使成功一点,最后还会使你沮丧不已。如果你以前是一个Java或者C#程序员,请密切注意本节的内容-这正是转载 2016-08-06 14:57:41 · 230 阅读 · 0 评论 -
C++临时变量的生命周期
C++ 中的临时变量指的是那些由编译器根据需要在栈上产生的,没有名字的变量。主要的用途主要有两类:1) 函数的返回值, 如: 1 string proc() 2 { 3 return string("abc"); 4 } 5 6 int main() 7 { 8 proc(); 9 return 0; 10 }其转载 2016-08-21 10:24:23 · 470 阅读 · 0 评论 -
auto_ptr浅析
auto_ptr是C++标准库中()为了解决资源泄漏的问题提供的一个智能指针类模板(注意:这只是一种简单的智能指针)auto_ptr的实现原理其实就是RAII,在构造的时候获取资源,在析构的时候释放资源,并进行相关指针操作的重载,使用起来就像普通的指针。std::auto_ptr pa(new ClassA);下面主要分析一下auto_ptr的几个要注意的地方:1,转载 2016-08-21 10:31:46 · 171 阅读 · 0 评论 -
C++中的左值与右值
左值 (lvalue)和右值 (rvalue) 是 c/c++ 中一个比较晦涩基础的概念,有的人可能甚至没有听过,但这个概念到了 c++11 后却变得十分重要,它们是理解 move, forward 等新语义的基础。左值右值的定义左值与右值这两概念是从 c 中传承而来的,在 c 中,左值指的是既能够出现在等号左边也能出现在等号右边的变量(或表达式),右值指的则是只能出现在等号右边的转载 2016-08-21 10:39:18 · 166 阅读 · 0 评论 -
C++11中的move与forward
一. move关于 lvaue 和 rvalue,在 c++11 以前存在一个有趣的现象:T& 指向 lvalue (左传引用), const T& 既可以指向 lvalue 也可以指向 rvalue。但却没有一种引用类型,可以限制为只指向 rvalue。这乍看起来好像也不是很大的问题,但实际与看起来不一样,右值引用的缺失有时严重限制了我们在某些情况下,写出更高效的代码。举个粟子,假设我转载 2016-08-21 10:42:16 · 302 阅读 · 0 评论 -
cin、cin.get()、getline()(讲解的很详细)黄刚的博客
黄刚的博客:cin、cin.get()、getline()(讲解的很详细)in等函数深入分析很多初学者都认为cin函数是一个很简单的函数,其实不然!cin函数有很多需要了解的知识(比如:cin的返回值是什么,cin提供了哪些成员函数且分别是什么作用,如cin.clear(),cin.ignore(), cin.fail(), cin.good()等等),如果没有很好的掌转载 2016-10-10 21:53:44 · 10429 阅读 · 5 评论