null

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2011年5月1日

摘要: #include <iostream>using namespace std;void ShellQin(int A[],int n){ int gap=n/2; int i,j; for(;gap>0;gap=gap/2)//设置初始gap,按照gap进行分组,gap按照gap/2递减 { //设置好gap以后,从gap开始一直到最后一个元素,为每一个元素在其对应的组进行插入排序。gap应该是该组所在位置的第2个元素,第一个元素位置是0 for(i=gap;i<n;i++) { j=i; //对一组进行插入排序 if(A[j-gap]>A[j]) { /*如果A 阅读全文
posted @ 2011-05-01 16:06 Null_x1 阅读(4632) 评论(1) 推荐(1) 编辑

2011年4月30日

摘要: 面试宝典第三版阅读笔记1.printf的打印顺序从右到左#include<stdio.h>int main(){ int arr[]={6,7,8,9,10}; int *ptr=arr; printf("%d,%d",*ptr,*(++ptr)); return 0;}结果是7,7,原因在于printf函数打印的顺序是从右到左,先对ptr指针加1指向7,然后再进行打印。2011/4/30日晚20:55分补充:这道题太经典了,远没有前面写的那么简单~通过北庚进一步升华,此题的扩展题如下:#include <iostream>using namespa 阅读全文
posted @ 2011-04-30 21:05 Null_x1 阅读(1625) 评论(0) 推荐(2) 编辑

摘要: 写之前先写一个关于pow函数的使用问题。见下面一段程序判断输出:#include<stdio.h>#include<math.h>void show1(){ printf("show1:%d",pow(2,2));}void show2(){ int t=2; int d=pow(2,2); printf("show2:%d",d);//或者用printf("%d",(int)pow(2,2));}void main(void){ show1(); show2();}结果竟然是show1:0 ; show2:4 阅读全文
posted @ 2011-04-30 10:51 Null_x1 阅读(803) 评论(0) 推荐(0) 编辑

2011年4月24日

摘要: 关于虚函数表的个人总结1.虚函数表的创建:一个类存在虚函数的时候,编译器会为这个类创建一个虚函数表,这个表由这个类的所有对象共同所有。在创建这个类的类对象的时候将这个对象的前4个字节作为这项这个虚函数表的指针。即类对象的首地址中的内容存放的是虚函数表的地址。虚函数表的首地址里面存放的是第一个虚函数的首地址,如果有多个虚函数,则第二个虚函数的地址即为第一个虚函数首地址加上偏移量,地址如果用int*为单位表示的话偏移量加1,对于以16进制位表示的话则加4,(见下例,如果看着晕的话,不用看具体的,下面会有更加详细的解释).----(int*)*(int*)*(int*)(&b)是第一个函数的 阅读全文
posted @ 2011-04-24 22:32 Null_x1 阅读(1072) 评论(2) 推荐(1) 编辑