开心网 2011 校园招聘笔试题( C/C++ )
1. 下列两行代码有什么区别?
char a[] = “string”;
char *b = “string”;
2. 下列代码会输出什么?
#define SQ(x) (x*x)
int main()
{
int b = 3;
int a = SQ(b + 2);
printf(“%d”, a);
return 0;
}
3. 下列代码有什么问题?
char *foo(int n)
{
char buf[32];
buf[0] = (n != 0) ? ‘T’ : ‘F’;
buf[1] = 0;
return buf;
}
4. 下列代码有什么问题?若有错误请改正。
void swap(int *p1, int *p2)
{
int *p = p1;
p1 = p2;
p2 = p;
}
5. 若 char *p = malloc(32); 则 sizeof(p) 的值是什么?
6. 用递归方式和非递归方式写函数将一个字符串按字节反转,函数原型如下:
char *reverse(char *str);
7. 为什么在析构函数中不应该抛出异常?
8. 写出函数将 IP 地址转换成整数,比如: 192.168.0.136 为: 3232235656 。函数原型为:
long ip2long(const char *ip);