1.结构体名不是结构体的地址。 数组名是数组的首地址,函数名是函数的地址,但是,结构体名不是结构体的地址!记得曾经犯过这个错误,这次又犯了。 以下这个例子可以很好的证明这一点: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include <iostream> using namespace std; typedef struct A{ char *a; int b; }A; int main() { A m={"abc", 5}; printf("&m=%d, m.a=%d, m.b=%d\n",m, m.a, m.b); //这里有问题 return 0; } 在这个例子中: 输出:4291544 5 4291544(这里有问题了,应该是4291544 4291544 5) [...]
前几天写过一个堆排序的文章(http://www.wutianqi.com/?p=1820),里面谢了很多讲解和代码注释,个人感觉快速排序不是很难,所以不想写讲解,也不需要写注释,大家如果不明白什么是快速排序,可以去看下文章最后我推荐的几个链接。 我查过网上很多关于快排的文章和代码,但是基本都是最原始的快排,即霍尔(Hoare)快排。想必大家也没有注意这些,我准备把霍尔快排,算法导论上的快排和随机化快排的代码一起发出来,供大家对比与学习,欢迎大家和我探讨(Blog: www.WuTianqi.com)。 代码一.霍尔快排: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 [...]
再次看这篇文章,感觉说的好多都是废话,在文章最前面补充一句话: “[]的优先级高于*”,大家可以带着这句话看下面的~~~ ======================== 再一次的见证了自己的基础不牢靠。。。幸好发现得早,看见网上说,华为的一个面试题就考了这个方面的。 借那道华为的面试题引出问题,题目: char **p, a[16][8]; 问:p=a是否会导致程序在以后出现问题?为什么? 可能有一部分朋友会回答正确,这里他们认为,a[]是一级指针,a[][]就是二级指针。那这个到底对不对呢?
首先,推荐一下《算法导论》的第六章—堆排序,在网上找了很多资料,发现还是这本圣经最给力。大家学堆排序一定要去看看,不然是一种浪费。如果大家没有,可以去网上下载英文版(chm版)的,既清晰又适合阅读。 其实堆排序的讲解网上很多,而且基本都一样,不过我还是把一些基本概念写出来: 堆:(二叉)堆数据结构是一种数组对象。它可以被视为一棵完全二叉树,树中每个结点与数组中存放该结点值的那个元素对应。 二叉堆有两种:最大堆和最小堆(小根堆)。 最大堆:所有节点的子节点比其自身小的堆。 最小堆:所有节点的子节点比其自身大的堆。 堆排序:堆排序利用了大根堆(或小根堆)堆顶记录的关键字最大(或最小)这一特征,使得在当前无序区中选取最大(或最小)关键字的记录变得简单 在堆排序算法中,使用的是最大堆,最小堆通常在构造优先级队列时使用。 再次提醒大家,去看看《算法导论》里的第六章-堆排序。因为书上讲的太详细了,所以我也就不再多说。 这里我把《算法导论》上的伪代码用C/C++实现了,每个函数我都用自己的理解写出来了,如果大家还不懂,可以留言。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 [...]
今天真是高兴极了,首先TNND的六级过去了。下个学期哥还是一条好汉。。。 其次,今天在用QQ音乐听歌时,看到他推荐的圣诞系列歌曲,于是就从第一首开始顺着听,其实听这个歌曲是有一个原因的,大一时听过一首歌,记得当时是配着《生化危机1》的动画版听的,自从听了第一遍就一听钟情了。。。但是由于电脑重装的原因,这首歌也丢了,我只音乐记得歌名有个christmas,是关于圣诞的,在后来很长一段时间,我在网上都没有找到,这一直是一个遗憾,所以今天看到这些圣诞歌曲,也就抱着试试的兴趣听了。但是没想到,听了7,8首以后,一个熟悉的旋律传进了我的耳朵,居然真的碰到了这首歌,内心激动的无以言表,就像我博客的副标题中的一句一样:“用音乐去安抚”,不论高兴,悲伤,抑或其他,音乐都是一个很好的陪伴者。不多说,直接给出这首歌: 歌名:When Christmas Comes To Town