摘要: 前段时间有朋友给了我一道指针的习题,我当时并没有做对。并且输出的结果让我很是不解。今天仔细学复杂类型的时候,忽然灵光一现想起此道题并仔细琢磨一阵明白其中的幽微之处,遂写下此博文以记之。题目代码如下:int _tmain(int argc, _TCHAR* argv[]){ int a[5]={1,2,3,4,5}; int *p; p=(int *)(&a+1); printf("%d\n",*(p-1)); return 0;} 问:程序运行输出结果是多少? 我当时的回答是:1;当时的想法是&a+1 为 a[0]的地址加1,那么p所指向的是a[1],输出的 阅读全文
posted @ 2014-03-29 22:48 这夏 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 这两天在学习一些基本复杂类型的确认方法,整理了一下思路及写下一些心得。现在让我们一起来看看int *p[10]与int (*q)[10]这两个形似心不同的东西的究竟是有一些什么样的不同。1、首先让我们先来看看这两个变量所占的字节数吧int _tmain(int argc, _TCHAR* argv[]){ int *p[10]; int (*q)[10]; printf("%ld %ld\n",sizeof(p),sizeof(q)); return 0;}调试后发现分别占的字节为:是不是非常神奇呢,现在让我们一起去一点点发现他们之间的小秘密吧。2 确认方法 当我们声... 阅读全文
posted @ 2014-03-29 12:54 这夏 阅读(1326) 评论(1) 推荐(1) 编辑
摘要: 算法简介: 插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。算法实现步骤://插入排序算法实现思路:(以从小到大排序为例)// 第一步:得到一个无序数组//第二步:确定一个有序列表,一般默认为a[1]为第一个有序列表(a[0]作为监视哨),同时将有序列表中最右一个元素的后一位放入监视哨中。//第三步 :将监视哨中的数据与现有的有数列表中的从左至右数据依次比较,并将大数后移。//第四步:找到一个数a[j],使得a[j]//第五步: 将监视哨的数据插入到指定位置//第六步: 判断无序列表中是否还有数据有则跳到第二步,无则结束函数。算法代码: ... 阅读全文
posted @ 2014-03-29 00:07 这夏 阅读(159) 评论(0) 推荐(0) 编辑