雕刻时光

just do it……nothing impossible
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 50 下一页

2013年11月29日

摘要: 可能指针函数与函数指针的概念不是很清楚1.指针函数的概念其实跟普通函数的概率类似,就是一个函数的返回值是个指针类型!#include#includeusing namespace std;int *pointFun(){ int *p=(int *)malloc(sizeof(int)); *p=1; return p;}int main(){ int *ptemp=pointFun(); printf("%d\n",*ptemp);}2.函数指针还是比较有来头的观察以下函数#include#includeusing namespace std;void myfu... 阅读全文

posted @ 2013-11-29 21:55 huhuuu 阅读(1923) 评论(2) 推荐(0) 编辑

2013年11月28日

摘要: #include#includechar s[123]={"1233232"},str[123];char* strcpy(char *to,char *from){ if(NULL==to||NULL==from) //不检查指针的有效性,说明答题者不注重代码的健壮性。 throw "point error"; //应该以抛出异常来代替返回值,这样可以减轻调用者的负担、使错误不会被忽略、增强程序的可维护性。 int i; for(i=0;from[i]!='\0';++i){//直接使用字面常量(如本例中的0)会减少程序的可维护性 to 阅读全文

posted @ 2013-11-28 22:24 huhuuu 阅读(796) 评论(0) 推荐(0) 编辑

2013年11月27日

摘要: 在现实地图应用中,有个比较常见的问题,比如,你到了一个地方,想查查附近1km内有什么饭店。 这时地图应用就可以马上查询出周围有什么饭店,如果让你设计,你会怎么设计。假设局限在中国的地图上,共有1000000(用N表示)家饭店,每个饭店就2个信息量(经度x与纬度y),你现在到了某个地方(三个信息量,经度x2与纬度x2,还有以你为中心圆的半径 R个单位),假设这些数据在内存中是有序的,并且在小范围内点与点的信息存在邻接表内。 方法一:枚举,这个通过你所在的坐标与N个饭店进行比较,在R范围内的就输出,反之不输出。时间复杂度O(N),当饭店数量很大的时候,搜索速度就会很慢。 方法二:考虑到数... 阅读全文

posted @ 2013-11-27 21:58 huhuuu 阅读(758) 评论(0) 推荐(0) 编辑

2013年11月26日

摘要: 转自http://www.cnblogs.com/coder2012/p/3330311.htmlhttp://blog.sina.com.cn/s/blog_6776884e0100ohvr.html这篇在大体上比较清晰简单的描述了概念,比较通俗易懂B-tree B-tree,B是balance,一般用于数据库的索引。使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度。而B+tree是B-tree的一个变种,大名鼎鼎的MySQL就普遍使用B+tree实现其索引结构。 那数据库为什么使用这种结构? 一般来说,索引本身也很大,不可能全部存储在内存中,因此索引往往以索.. 阅读全文

posted @ 2013-11-26 10:24 huhuuu 阅读(2540) 评论(0) 推荐(0) 编辑

2013年11月25日

摘要: 一个进程相当于你写了的一个程序正在内存中运行,而这个进程内至少有一个主线程,C++就是main(),还有辅助线程,当然一旦主线程结束了,辅助线程就都结束了,这样就可以比较清晰地理解,进程是资源分配的基本单位,而线程,是共用进程中的资源的,同时操作系统就给了进程一部分内存堆和cpu处理的时间。 下面的函数可以观察两个辅助线程的运行情况 下面的程序有两个辅助线程,没有临界资源#include #include#include#include#include#include#include#include #includeusing namespace std;DWORD WINAPI Fu... 阅读全文

posted @ 2013-11-25 22:32 huhuuu 阅读(408) 评论(0) 推荐(0) 编辑

摘要: 1.有一组无序的数,只能两两相邻交换,最少交换几次可以使数组有序 由两两相邻交换考虑到逆序数,这个问题就转化到了逆序数一共有几对。 对于逆序数对数的计算,普通的有O(n*n)的算法,当然可以通过树状数组优化N*log(N)2.有一组无序的数(数字两两不相等:如3 1 1 1就不行),可以任意相互交换,最少交换几次可以使数组有序 问题其实可以转化到选择排序,比如 6 2 1 3 4,第一次将最小的取出放到第一位,如果最小的本来就在第一位,步数就不变,反之加1后交换位置 1 2 6 3 4,后面依次进行 O(n*n)的方法#include#include#includeusing namespac 阅读全文

posted @ 2013-11-25 20:29 huhuuu 阅读(756) 评论(0) 推荐(0) 编辑

2013年11月24日

摘要: 之前写了一篇堆栈的,这里再补充下内存其他的区域1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放 , 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域(BSS)。 - 程序结束后由系统释放 4、文字常量区 — 常量字符串就是放在这里的。 程序结束后由系统释放 阅读全文

posted @ 2013-11-24 16:38 huhuuu 阅读(11236) 评论(2) 推荐(3) 编辑

摘要: 先观察一下的代码:#includeint main(){ const int i=1; int y; int *pi=(int*)&i; *pi=2; y=*pi; int tempi; tempi=i; printf("i=%d\n",i); printf("tempi=%d\n",tempi); printf("y=%d\n",y);}输出的是i=1tempi=1y=2观察内存在执行完*pi=2后i被神奇的修改了,但是tempi=i 后 tempi 依旧1这时观察汇编你惊奇地发现,在编译成汇编的时候,temp=i 压根就没 阅读全文

posted @ 2013-11-24 11:14 huhuuu 阅读(1794) 评论(2) 推荐(0) 编辑

摘要: 1.动机:前段时间,一直有个疑问,就是编译器是从哪里知道数据的类型的,数据的类型是存在内存里面的么,因为自己调试编译器,发现内存中并没有多余的数据,后来在群上发问,才知道数据在编译成汇编的过程就知道数据的类型了,也就是数据的类型识别时在内存代码区里 观察代码#include#includestruct data{ short a; long b; long long c; float e; double f; double g; bool h; char i;};int main(){ data temp; temp.a... 阅读全文

posted @ 2013-11-24 10:26 huhuuu 阅读(911) 评论(0) 推荐(0) 编辑

2013年11月23日

摘要: 1. 出现字节对齐的动机:cpu的效率,内存的节省 话说第一次碰到字节对齐的时候是在今年六月实习的时候,有一次我在调用一个接口,把数据从那个借口复制过来,但是在那个借口的时候参数是正确的,一旦复制出来以后,参数就出错了,找了好久,后来大牛过来找了找,原来是在接口的时候数据是按一个字节对齐,接受的数据是取消指定对齐,所以就出问题了。 一般在内存充裕的时候我们是取消指定对齐的,因为这可以加快CPU的寻找数据的时间,因为 (比如有些平台每次读都是从偶地址开始,如果一个int型(假设为32位系统)如果存放在偶地址开始的地方,那 么一个读周期就可以读出这32bit,而如果存放在奇地址开始的地方,就... 阅读全文

posted @ 2013-11-23 19:11 huhuuu 阅读(2113) 评论(0) 推荐(0) 编辑

上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 50 下一页