
C/C++
快乐的一只程序猿
快乐的一只,一只快乐的我,热爱编程,热爱生活!
展开
-
单链表的逆序输出
从尾到头打印单链表. 这里只是简单写了一个可以实现正常功能的单链表,(未实现析构函数)由于单链表只能一般从前向后遍历,这样按题目的要求先访问者后输出,正好与栈的的功能相同,用栈能解决的问题都可以用递归的方法实现。这里我用了递归的方法。# include # include using namespace std;struct ListNode{原创 2016-04-03 21:23:32 · 2310 阅读 · 0 评论 -
为什么C++编译器不能支持对模板的分离式编译
为什么C++编译器不能支持对模板的分离式编译 刘未鹏(pongba)C++的罗浮宫(http://blog.youkuaiyun.com/pongba) 首先,一个编译单元(translation unit)是指一个.cpp文件以及它所#include的所有.h文件,.h文件里的代码将会被扩展到包含它的.cpp文件里,然后编译器编译该.cpp文件为一个.obj文件(假定我们的平台是win3转载 2016-08-27 10:50:11 · 406 阅读 · 0 评论 -
fwrite函数的用法
fwrite(const void*buffer,size_t size,size_t count,FILE*stream);(1)buffer:是一个指针,对fwrite来说,是要输出数据的地址。(2)size:要写入的字节数;(3)count:要进行写入size字节的数据项的个数;(4)stream:目标文件指针。原创 2016-07-17 10:37:52 · 34536 阅读 · 0 评论 -
malloc ,calloc 和realloc的区别与联系
(1)malloc当一个程序另外需要一些内存时,它就调用malloc函数,从内存池提取一块合适的内存,并返回指向该内存的指针。此时这块内存并没有以任何方式进行初始化。并且由于malloc并不知道需要返回一个什么类型的指针,所以提供了一个可以强转为其他类型的void*类型的指针。如果操作系统无法向malloc提供更多的内存,就返回空指针。所以说每次我们malloc一个空间都应该检查一下返回值。确原创 2016-07-16 23:28:25 · 413 阅读 · 0 评论 -
strcpy strncpy memcpy等系列库函数剖析与实现
# include# includeusing namespace std;/*首先说明一下库中strcpy的功能;其函数库原型为char* strcpy(char* dst,char const *src)函数功能:将原字符串的内容复制到目标字符串,dst是一个数组指针或者是一个一块动态分配内存的数组的指针注意事项:1.源字符串比目标字符数组长的话,多余的字符将会目标空间之后的地方原创 2016-05-22 17:45:44 · 434 阅读 · 0 评论 -
求2000以内的素数
方法一就是判断该数能否被2到data-1的数整除,如果可以则不为素数方法二:m不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~ 之间的每一个整数去除就可以了。如果m不能被 2 ~ 间任一整数整除,m必定是素数。例如判别17是是否为素数,只需使17被2~4之间的每一个整数去除,由于都不能整除,可以判定17是素数。原因:因为如果m能被 2 ~ m-1 之间任一整数整除,其二个因子必定有一原创 2016-05-09 12:34:43 · 4948 阅读 · 0 评论 -
C++产生随机数的方法总结
产生一定范围随机数的通用表示公式要取得[a,b)的随机整数,使用(rand() % (b-a))+ a;要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a;要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1;通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。要取得a到b之间的随机整数,另一种表示原创 2016-05-09 13:48:36 · 742 阅读 · 0 评论 -
C/c++几个预定义的宏:__DATE__,__TIME__,__FILE__,__LINE__
一边情况下,C/C++编译器会内置几个宏,这些宏定义不仅可以帮助我们完成跨平台的源码编写,灵活使用也可以巧妙地帮我们输出非常有用的调试信息。ANSI C标准中有几个标准预定义宏(也是常用的):__LINE__:在源代码中插入当前源代码行号;__FILE__:在源文件中插入当前源文件名;__DATE__:在源文件中插入当前的编译日期__TIME__:在源文件中插入当前编译转载 2016-05-09 11:48:10 · 618 阅读 · 0 评论 -
C++控制输入输出的格式
在输出数据时,为简便起见,往往不指定输出的格式,由系统根据数据的类型采取默认的格式,但有时希望数据按指定的格式输出,如要求以十六进制或八进制形式输出一个 整数,对输出的小数只保留两位小数等。有两种方法可以达到此目的。一种是我们已经介绍过的使用控制符的方法(详情请查看:C++输入cout与输出cin);第2种是使用流对象的有关成员函数。分别叙述如下。使用控制符控制输出格式控制格式的使用方转载 2016-05-09 11:22:19 · 799 阅读 · 0 评论 -
C++中的关键字剖析(整理)
(一)volatilevolatile的作用是: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值.简单地说就是防止编译器对代码进行优化.比如如下程序:1234XBYTE[2]=0x55;XBYTE[2]=0x56;XBYTE[2]=0x57;XB原创 2016-05-09 09:56:17 · 1005 阅读 · 0 评论 -
sizeof和strlen的区别
char *arr = "What?"; int len_one = strlen(arr); int len_two = sizeof(arr); cout char arr[10] = "What?"; int len_one = strlen(arr); int len_two = size原创 2016-04-06 20:18:32 · 253 阅读 · 0 评论 -
关于复杂指针数组,函数以及函数指针,数组思考
指针数组其实是数组,只不过是数组里面放着指针如int *p[],由于中括号的优先级高于星号,所以p先与中括号结合形成数组,然后再与星号结合形成指针数组,即每一个数组元素是一个指向整形数据的指针。而数组指针实际上是指向数组的指针如int(*p)[]。 同理函数指针是指向一个函数的指针,指针函数是说这个指针指向了一个函数如int(*fun)(int),而函数指针则意味着它是一个原创 2016-05-12 00:24:35 · 384 阅读 · 0 评论 -
函数声明中的强制类型转换
如何写一个程序使得微处理器在启动时自动调用0位置处的子例程呢? 首先我们要找到这样的一个位置,的办法就是用一个指针指向该位置,而该位置正好又是一个我们所需要的任意类型的函数,那么问题就能得到解决。假设我们有一个指向该位置的函数指针,其类型为空。如:(*fp)().现在最重要的问题就是如何让fp指向0位置处。 我们想到了类型的强制转换。比如将整数0,转换为指向空类型的函数的指针原创 2016-05-12 00:23:16 · 716 阅读 · 0 评论 -
判断大小端问题
最简单的判断方法# include int main(){ int test = 1; char*p = (char *)&test; if (p) { printf( "该存储方式为小端模式\n" ); }原创 2016-04-06 20:15:08 · 315 阅读 · 0 评论 -
C++ 智能指针详解
C++ 智能指针详解 一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_p转载 2016-08-27 11:50:50 · 460 阅读 · 0 评论