C/C++ 常见1000道面试题( 101 )

如题所述

下列哪两个是等同的

int b;

A const int* a = &b;

B const* int a = &b;

C const int* const a = &b;

D int const* const a = &b;

内联函数在编译时是否做参数类型检查?

答:内联函数要做参数类型检查, 这是内联函数跟宏相比的优势。

全局变量和局部变量有什么区别?实怎么实现的?操作系统和编译器是怎么知道的?

(1)生命周期不同:

全局变量随主程序创建和创建,随主程序销毁而销毁

局部变量在局部函数内部,甚至局部循环体等内部存在,退出就不存在; 内存中分配在全局数据区

(2)使用方式不同:通过声明后全局变量程序的各个部分都可以用到;局部变量只能在局部使用,分配在栈区

操作系统和编译器通过内存分配的位置来知道的,全局变量分配在全局数据段并且在程序开始运行的时候被加载。局部变量则分配在堆栈里面 。

有 A 、 B 、 C 、 D 四个人,要在夜里过一座桥。他们通过这座桥分别需要耗时 1 、 2 、 5 、 10 分钟,只有一支手电,并且同时最多只能两个人一起过桥。请问,如何安排,能够在 17 分钟内这四个人都过桥?

Solution:关键是时间最长的两个人必须同时过桥

The First Time : A(1) 和 B(2) 过桥, A(1) 返回 Cost : 1+2

The Second Time : C(5) 和 D(10) 过桥, B(2) 返回 Cost : 10+2

The Third Time A(1) 和 B(2) 过桥 Cost : 2

Total Time Cost : (1+2)+(10+2)+2=17 minutes

static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?

答:static全局变量与普通全局变量区别:static全局变量只初使化一次,防止在其他文件单元中被引用;

static局部变量和普通局部变量区别:static局部变量只被初始化一次,下一次依据上一次结果值;

static函数与普通函数区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。

对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?

c用宏定义,c++用inline

有1,2,….一直到n的无序数组,求排序算法,并且要求时间复杂度为O(n),空间复杂度O(1),使用交换,而且一次只能交换两个数。

sizeof相关系列问题, const相关系列问题

a、对于 struct s{char a;int b} sizeof(s) = 8 因为内存对齐

b、对于 int a[200] sizeof(a) = 200* sizeof(int) = 800 对整个数组评测 ,int* a = new int[200] , sizeof(a) = 4 对指针评测

c、这种使用位域的也有,从上到下最多相加不大于8便占1个位置, bits = 1 + 1(4+2 < 8) + 1(3) = 3. 其中元素最大为1个char 大小 8 位

写出运行结果:

100 的2进制是1100100 去掉后面的5位余11放入x.s3中 结果: 3

d 、对于空的类进行评测 class A {}; sizeof(A) = 1,默认空类是有一个占位符的

e、 对于虚函数 class A{ virtual test()}; class B:public A{} sizeof(B) =4

f、设有以下说明和定义:

则语句 printf(“%d”,sizeof(struct date)+sizeof(max));的执行结果是:52

g、使用malloc或者new 分配内存,void *pp = malloc(10); sizeof(p) = 4;跟指针一样,sizeof 只能测出静态数组的长度, 无法检测动态分配的或外部数组大小

h、下面函数输出结果: 4 外部数组

写出二分查找的代码.

写出在母串中查找子串出现次数的代码.
温馨提示:答案为网友推荐,仅供参考
相似回答