Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1004070
  • 博文数量: 150
  • 博客积分: 3017
  • 博客等级: 少校
  • 技术积分: 3829
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-19 14:40
个人简介

Now in Baidu WISE team

文章分类

全部博文(150)

文章存档

2014年(8)

2013年(31)

2012年(111)

分类: C/C++

2012-12-26 15:27:09

自己记录,面试时不要犯错误。
 
1.起手先判断空指针 
       assert(ptr!=NULL)
2.位操作一定多打括号
       b = (a<<1) +1
3.宏定义多打括号,参数中间不要有空格。注意不要出歧义
 #define SWAP(a,b) do{(a)^=(b); (b)^=(a); (a)^=(b);} while(0)
4.字符串加结束符
       str[i] = '\0'
5.char*形参根据需要通常要加const
       char* strstr(const char* src, const char* dest)
6.malloc和free一定要配对
       int *cpy = (int*)malloc(sizeof(int)*10);
       ...
       free(cpy);
7.有返回值的方法先写return
 
8.指针用完赋值NULL
 
9.链表题简单题问清单链表 双链表,循环链表
阅读(1374) | 评论(8) | 转发(0) |
给主人留下些什么吧!~~

runningdark2013-05-03 14:12:12

txgc_wm:靠,竟然是乱码!

就是改用do{(a)^=(b); (b)^=(a); (a)^=(b);} while(0)的方式

额,明了。多谢指点。

回复 | 举报

txgc_wm2013-05-03 00:11:47

runningdark:乱码无显示啊。 写到一行里看下。thx

靠,竟然是乱码!

就是改用do{(a)^=(b); (b)^=(a); (a)^=(b);} while(0)的方式

回复 | 举报

runningdark2013-05-02 23:46:54

txgc_wm:楼主,你那样写也不是好的方法,将程序展开来看还是很怪异(尽管它不会出错)。
按照人们正常的语法来写会是这样:
if(a>b)
     SWAP(a,b);

展开后是这样:
if(a>b)
{
     if(a!=b)
     {
          (a)^=(b); (b)^=(a); (a)^=(b);
     }
};
最后面的那个分号是否会很怪呢?


建议以这种格式写:
 #define swap(a,b)  \
do{&n

乱码无显示啊。 写到一行里看下。thx

回复 | 举报

txgc_wm2013-05-02 19:46:29

runningdark:囧嘞~ 恩,这个当时是出过错,弄了好久。最终写法是 #define swap(a,b) {if(a!=b){(a)^=(b); (b)^=(a); (a)^=(b);}}。 移步 http://blog.chinaunix.net/uid-26456800-id-3442434.html 之前为了这个问题专门写了个。 写这篇的时候偷懒了。改掉。

楼主,你那样写也不是好的方法,将程序展开来看还是很怪异(尽管它不会出错)。
按照人们正常的语法来写会是这样:
if(a>b)
     SWAP(a,b);

展开后是这样:
if(a>b)
{
     if(a!=b)
     {
          (a)^=(b); (b)^=(a); (a)^=(b);
     }
};
最后面的那个分号是否会很怪呢?


建议以这种格式写:
 #define swap(a,b)  \
do{&n

回复 | 举报

runningdark2013-05-02 17:37:13

txgc_wm:按照你上面那样写,例如
if(a>b)
     SWAP(a,b) 

一方面,它显示的不友好;另一方面,它是错误的。

囧嘞~ 恩,这个当时是出过错,弄了好久。最终写法是 #define swap(a,b) {if(a!=b){(a)^=(b); (b)^=(a); (a)^=(b);}}。 移步 http://blog.chinaunix.net/uid-26456800-id-3442434.html 之前为了这个问题专门写了个。 写这篇的时候偷懒了。改掉。

回复 | 举报