随笔分类 -  C/C++

something about C/C++
摘要:#include <stdio.h>int main(){ int i = 1; unsigned int j = -1; int kk = i + j; unsigned int kkk = i + j; printf("%d %u\n", kk, kkk); if(-1 < (unsigned char)1) { printf("-1 < 1\n"); } else { printf("-1 > 1\n"); } if(i < j) { printf("1 < -1\n" 阅读全文
posted @ 2012-12-10 17:57 Anbit自由之路 阅读(203) 评论(0) 推荐(0)
摘要:《Expert C Programming》中花了两篇写了数组与指针,这里将其中的一个图记录一下,也算是平时编程稍不注意就会产生bug的地方。不同点: 1.声明的时候,如extern char a[],不能改写成指针的形式; 2.定义的时候,如char a[10],不能改写成指针的形式;相同点: 1.函数的参数,可以是func(char a[]),也可以是func(char * a),因为数组名被编译器当作指向该数组第一个元素的指针; 2.表达式中,可以是c = a[i]; 也可以是 c = *(a + i);数组的下标总是与指针的偏移量相同。如果你喜欢数组的下标从1到N,可以传入数组前面的一 阅读全文
posted @ 2012-12-10 17:56 Anbit自由之路 阅读(159) 评论(0) 推荐(0)
摘要:最近看《Expert C Programming》,有不少收获,现在记录下面一点:复杂的类型转换如下:1.一个对象的声明,它的类型就是想要转换的结果类型;2.删去标识符(以及任何如extern之类的存储限定符),并把剩余的内容放在一对括号里;3.把第2步产生的内容放在需要进行类型转换的对象的左边。来两个例子:经常使用的qsort()函数:void qsort(void base, size_t nel, size_t width, int(*compar)(const void*, const void*));其中,我们会经常传入自己设计的比较函数,但接收的参数类型往往不是void*类型,就像 阅读全文
posted @ 2012-12-10 17:55 Anbit自由之路 阅读(171) 评论(0) 推荐(0)
摘要:忙了将近一年的2个项目终于在末日来临前结束了,一直都在忙,忘了积累曾经遇到过解决过的问题,翻开收藏夹,好多好多,让人看完不知道该怎么下手,也意识到必须来更新博客了,同时领悟到在项目时候,一个文档,可以零星记录问题的始终,在结项的时候,利用几天偷闲的时光,整理整理,对于领悟与回味,甚好。 因为项目是从单一模式到多个模式,所以原来的Singleton类 ,变得有点复杂,它们之间突然多了某种构造依赖关系和析构依赖关系,虽然我们可以利用Meyers Singleton来控制构造顺序,却不能控制析构顺序。引用摘录的一段: Scott Meyer在<<Effective C++>> 阅读全文
posted @ 2012-12-08 11:28 Anbit自由之路 阅读(4484) 评论(0) 推荐(0)
摘要:今天刚刚做完关键项目之一,准备换新机器,整理中发现有一截图,遂将其分享,如下 阅读全文
posted @ 2012-08-28 16:20 Anbit自由之路 阅读(247) 评论(0) 推荐(0)
摘要://以下是关于 hex 转换为 ascii的代码,一开始还觉得不以为然,但真正动手,还是发现一些急需完善的东东,//比如考虑输入的问题,还有大小写的问题//很多情况下,是无法预测用户的输入的,唯一能做的是,把程序完善得非常perfection#include <iostream>using namespace std;int binarySearch(int *a, int len, int val){ int beg, mid, end; beg = 0; end = len - 1; while (beg < end - 1) { mid = b... 阅读全文
posted @ 2011-12-13 17:12 Anbit自由之路 阅读(1278) 评论(0) 推荐(0)
摘要:很多企业很喜欢在笔试题或者面试的时候问二分搜索,在看了编程之美后,回顾,写下了这个让很多人不以为是,但却经常出错的codeint binarySearch(int *a, int len, int val){ int beg, mid, end; beg = 0; end = len - 1; while (beg < end - 1) { mid = beg + (end - beg) / 2; if(a[mid] <= val) beg = mid; else end = mid; } if(a[end] == val) return e... 阅读全文
posted @ 2011-12-13 17:07 Anbit自由之路 阅读(146) 评论(0) 推荐(0)
摘要:今天整3D项目时,遇到一个线段切割成更小的线段,并需要记录线段上的点,因为其他地方大多用了vector,所以也自然地用vector来实现功能,但还是在下面的程序转了一圈,才发现自己其实对vector的机制熟悉不够,看来得去看看候俊杰写的STL了,或者去看看boost相关库~~ 最后写了一个相关的测试程序,感觉这道题做笔试或者面试题,也是不错的,呵呵 vector<int> *vec = new vector<int>[4]; int i, j; for (i = 0; i < 4; ++i) for (j = 0; j < 10; ++j) vec[i].p 阅读全文
posted @ 2011-10-26 08:47 Anbit自由之路 阅读(285) 评论(0) 推荐(0)