之前好长一段时间都在学习cocos2d-x引擎的使用,发现里面好多地方用到了C++11,现在打算深入学习一下这方面的知识,顺便在牛客网上面多刷点c/c++方面的题,算做一次复习吧!
1.全局变量可不可以定义在可被多个.C文件包含的头文件中?
A 可以
B 不可以
<span style="font-size:18px;">#include<stdio. h> int fun(char *s) { char *p=s; while(*p !='\0') p++; return(p-s); } main() { printf("%d\n",fun("goodbye!")); }</span>
<span style="font-size:18px;">#include < stdio. h > void f( int x) { if(x > = 10) { printf( "%d - ",x%10); f(x/10 ); } else printf( " % d" , x); } main() { int z = 123456; f(z); }</span>
则程序的输出结果是?
A 6-5-4-3-2-1-
B 6-5-4-3-2-1
C 1-2-3-4-5-6
D 1-2-3-4-5-6-
答案: B
解析:水题,考察函数的递归调用
5.下面有关虚函数的描述,说法错误的是?
A. 虚函数的作用是实现了继承性
B. 虚函数的作用就是实现“动态联编”,也就是在程序的运行阶段动态地选择合适的成员函数
C. 和类的静态成员函数与非类的成员函数相比,虚函数的效率较低
D. 要正确的实现虚函数,只能用一个基类的指针或者引用来指向派生类对象
答案:A
解析:虚函数的作用是实现了多态性。准确的说,是动态的多态性。那什么是静态的多态性呢?函数重载、运算符重载。。。
6.以下程序的输出结果为
<span style="font-size:18px;">#include "stdio.h" int func(int x, int y) { return (x + y); } int main() { int a = 1, b = 2, c = 3, d = 4, e = 5; printf(" % d\n", func((a + b, b + c, c + a), (d, e))); return 0; }</span>
B 5
C 9
D 出错
<span style="font-size:18px;">#include<stdio.h> void add(int *p) { (*p)++; printf("%d",*p); if (*p>5) { return; } add(p); } int main() { int i=0; add(&i); return 0; }</span>
答案:B
解析:什么是heap?举个栗子,你用new和delete操作的就是堆!
9.以下涉及到内存管理的代码段中,有错误的是:
int *a=new int(12);
//.....
free(a);
int *ip=static_cast<int*>(malloc(sizeof(int)));
*ip=10;
//.....
delete ip;
double *a=new double[1];
//....
delete a;
int *ip=new int(12);
for(int i=0;i<12;++i){
ip[i]=i;
}
delete []ip;
答案:A B D
解析:new和delete对应,malloc和free对应,所以A B 错误。
至于D,int *ip=new int(12)指的是,声明一个整形指针,初始化其值为12,而如果是 int *ip=new int[12],指的是,声明一个包含12个元素的数组。
10.请问 func(0x11530828)的返回值是?
<span style="font-size:18px;"> int func(unsigned int i) { unsigned int temp = i; temp = (temp & 0x55555555) + ((temp & 0xaaaaaaaa) >> 1); temp = (temp & 0x33333333) + ((temp & 0xcccccccc) >> 2); temp = (temp & 0x0f0f0f0f) + ((temp & 0xf0f0f0f0) >> 4); temp = (temp & 0x00ff00ff) + ((temp & 0xff00ff00) >> 8); temp = (temp & 0x0000ffff) + ((temp & 0xffff0000) >> 16); return temp; } 请问 func(0x11530828)的返回值是:</span>