c 和 c++
拜占庭里一棵草
这个作者很懒,什么都没留下…
展开
-
c中的参数别名问题
c中由于别名问题的存在,导致程序的结果会出乎预料比如:void f1(int *xp, int *yp){ *xp += *yp; *xp += *yp;}和void f2(int *xp, int *yp){ *xp += 2* *yp;}当xp和yp指向不同的内存时,两个函数结果一样,但是,当xp和yp指向同一块原创 2015-03-02 10:11:36 · 804 阅读 · 0 评论 -
malloc不是一个系统函数
malloc是完全在用户模式下运行的c标准库函数(当然,当用户申请的内存不够,在malloc里面是要调用系统内核函数sbrk()的),sbrk()函数是向系统申请一大块内存(heap),可能这块内存还没有被用户调用malloc来申请,而sbrk(n)向系统申请内存就是在页表中建立虚拟地址--物理地址的对应项。而sbrk申请的内存的管理由用户自己通过malloc管理,这也原创 2015-03-03 20:52:37 · 701 阅读 · 0 评论 -
关于C++ RTTI中typeid()的原理
一直不了解c++中如何判断一个实例的类别,只知道用typeid()就好,找了好多资料也都是说关于typeid()怎么用,对于原理很少谈到。于是偶然间我发现了一句话 : 典型的RTTI是通过在VTABLE中放一个额外的指针来实现的。 (来源 http://blog.chinaunix.net/uid-20622737-id-3315150.html)。恍然大悟,于是试验了一下。原创 2015-03-03 21:37:35 · 1198 阅读 · 1 评论 -
关于强制类型转换
以下是c或者c++中转换,java中好像编译器做的比较周到,可能会报错。类型转换无非就是2种:相同bit的数据类型之间的变换,不同bit的数据结构之间的变换。先是相同bit的数据结构之间的变换,这个就一个原则,就是二进制值转换之前和转换之后都不变,变得只是描述规则变了(就是用不同的编码)。然后较为复杂的是不同bit的数据结构之间的变换。先是由大到小变: int原创 2015-03-21 18:06:29 · 495 阅读 · 0 评论 -
质因数分解并图形化打印
昨天做了360的机试编程题,第一题感觉很有意思,因此把题意和代码放上,为各位同学提供方便题意是: 将一个小于1000000的数质因数分解,并且按照从小到大的顺序 利用 - 和 | 和 * 打印出来例子:输入: 199999输出:以下是源代码(如有错误,欢迎指正):#include"stdio.h"#include"stdlib.h"原创 2015-09-16 11:10:54 · 508 阅读 · 0 评论