C语言面试笔记(8/26)

时间:2021-06-25 15:33:57

在32位的机器环境下,char、short、int、float、double这样的内置数据类型sizeof值的大小分别为1,2,4,4,8;

C++标模板库(standard Template Library,STL)里面提供了10种通用的容器类。vector(向量)中的元素是按照插入的顺序排列的;deque(队列)中的元素是按照进队列的顺序排列的;list中的元素是无序的;map中的元素是采用了平衡二叉树进行排列的,是为了具有更高的查询效率;

在所有类说明中,内部定义的成员函数都是内联函数

符号优先级比较:

算数运算符>关系运算符>与(&&)>或(||)>赋值运算符

a、C++中成员函数被重载的特征:

(1)相同的范围(同一个类中);

(2)函数名字相同;

(3)参数不同(与参数类型无关,参数类型相同时不是重载);

(4)virtual关键字可有可无;

b、覆盖是指派生类的函数覆盖基类函数,规则如下:

(1)函数名字相同;

(2)参数相同;

(3)基类函数必须有Virtual 关键字;

c、“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:

(1)如果派生类的成员函数与基类的成员函数同名,但是参数不同,此时,有无virtual关键字,基类的成员函数都会被隐藏;

(2)如果派生类的函数与基类的函数同名,并且参数相同,但是基类的函数没有关键字“virtual”,此时,基类的成员函数被隐藏;

以下程序输出值为多少?

short i=65537;

int j=i+1;

printf("i=%d,j=%d\n",i,j);

输出为i=1;j=2;

解析:

因为short占俩个字节即16bit,这里i=65537转化为二进制则为1 0000 0000 0000 0001;溢出了,所以i的值为1;j=i+1=2;

下面俩段代码中的for循环分别执行多少次?

1、

unsigned short i,j;

for(i=0,j=2;i!=j;i+=5,j+=7){}

2、unsigned short i,j;

for(i=3,j=7;i!=j;i+=3,j+=7){}

unsigned short型占16bit,最大值为65536;

看成一个跑圈追人的问题;

1、可以认为j比i落后65536-2=65534;j每次追赶2个,63334/2=32767;

2、同理j比i落后65536-4=65532;j每次追赶4个,65532/4=16383