2011年10月21日

表达式"x=x&(x-1)

摘要: x = x & (x - 1)含义:这条语句执行一次,就会把x用二进制格式表示时的最右边的一个二进制1变为二进制0,因为x-1会将该位(x用二进制表示时最右边的一个二进制1)变为0;应用1:把一个整数用二进制表示时,其中二进制1的个数;int Func(int x){ int count = 0; while(x) { x = x & (x - 1); count++; } return count;};设x=9999,其二进制格式为: 10011100001111; 则count=8;思路:将x转化为二进制格式,统计一下含有的二进制1的个数;应用2:判断一个整数(x)是否是2 阅读全文

posted @ 2011-10-21 14:01 艾杏佛 阅读(1055) 评论(0) 推荐(0)

输出

摘要: 一: #define ADD(p) {p++;(*p)++;} Add(int *p){p++;(*p)++;} int a[]={0,1,2}; int main() { int *p=a; ADD(p) ADD(p) printf("%d,%d,%d\n",a[0],a[1],a[2]); p=a; Add(p); Add(p); printf("%d,%d,%d\n",a[0],a[1],a[2]); } 输出是多少?输出:0,2,30,4,3二:void test(char *p){ p+=3; } int main() {char *p = & 阅读全文

posted @ 2011-10-21 11:33 艾杏佛 阅读(481) 评论(0) 推荐(0)

char str[] 和 char *str 的区别(zhuan)

摘要: char*get_str(void){charstr[]={"abcd"};returnstr;} char str[] = {"abcd"};定义了一个局部字符数组,尽管是数组,但它是一个局部变量,返回它的地址肯定是一个已经释放了的空间的地址。 此函数返回的是内部一个局部字符数组str的地址,且函数调用完毕后 此数组被销毁,所以你返回的指针也就指向一块被销毁的内存,这种写法是错误的。char*get_str(void){char*str={"abcd"};returnstr;} char* str = {"abcd&quo 阅读全文

posted @ 2011-10-21 11:30 艾杏佛 阅读(1572) 评论(0) 推荐(0)

导航