2010年11月18日

c语言指针、数组问题(1)

摘要: 问:int a[5]={1,2,3,4,5}; int * p = (int *)(&a+1); printf(“%d”,p[-1]);输出为什么是5,而不是1?&a+1是指向哪个数组元素的地址?答: a的类型为一个数组,内含5个int型的变量(现假设a中首元素地址为100); &a获得指向数组的指针,指针的内容为a的地址(100),&a +... 阅读全文

posted @ 2010-11-18 14:00 leesy 阅读(217) 评论(0) 推荐(0)

typedef的特殊用法

摘要: (申明:非原创) typedef用法: 为复杂的声明定义一个新的简单的别名。方法是:在原来的声明里逐步用别名替换一部分复杂声明,如此循环,把带变量名的部分留到最后替换,得到的就是原声明的最简化版。举例:1. 原声明:int *(*a[5])(int, char*);变量名为a,直接用一个新别名pFun替换a就可以了: typedef int *(*pFun)(int, char*);原声明的最简化... 阅读全文

posted @ 2010-11-18 13:51 leesy 阅读(349) 评论(0) 推荐(0)

判断32位整数二进制中1/0的个数

摘要: 1int findone(unsigned int n){ for(int i = 0; n > 0; n >>=1) { i += (n & 1); } return i;}2.然而上述的算法,时间复杂度是T(m)=m,取决于二进制数的位数m。如果要求在更短时间内求出,应该如何做呢?如果findone函数被反复调用(成千上万次调用),那应该怎么优化呢? 可以以空间换时... 阅读全文

posted @ 2010-11-18 13:36 leesy 阅读(1036) 评论(0) 推荐(0)

导航