关于C/C++的一些知识点整理 (12)
1. 在关键字 private 后面定义的成员为类的私有成员。
在关键字 public后面定义的成员为类的私有成员。
在关键字 protected 后面定义的成员为类的私有成员。
2.执行完a=5 mod 3 语句后,a的值为?
答案:2。
解析:mod运算即取余运算,是在整数运算中求一个整数n除以另一个整数p的余数的运算,且不考虑运算的商。
3.C 语言俗称"低级语言的高级形式",这说明C 语言的功能不强。请问这句话的说法是正确的吗?
答案:错。
解析:C语言之所以被称为"低级语言的高级形式"是因为它能直接接触地址、内存等物理硬件设施,但它又不同于低级语言像机器语言、汇编语言等,C语
言可以说是各种高级语言的鼻祖,非常强大。
4.a=3*5 , a*4; 最终a为60.是否正确?
答案:错。
解析:逗号表达式,依次计算,整体的值为最后结果,先计算a=3*5,所以a的值是15,再计算a*4,由于没有再进行赋值运算,所以a的值还是15,不过
整体表达式的值是60。你可以这样测试 b=(a=3*5,a*4);你会发现输出的a是15,b是60。
5.类模板的格式如下:
template<class
形参名,
class
形参名,…>
class类名{ ... };
函数模板的格式如下:
Template <class
形参名,
class
形参名,......> 返回类型函数名(参数列表){函数体}
其中,class可以用
typename关键字代替。
6.
解析:这里执行完毕还会进行一次i--;循环的最后一次时i=0;执行完毕会进行i--;此时i已经是-1了,但实际上我们想要赋值的是str[0](数组的首位),所以
此时我们还需要再加1才满足。
7.在 C 语言中,char 型数据在内存中的存储形式是ASCII 码。
8.一个类的友元函数能够访问类的所有成员。
9.Size(in bytes) of C numeric data types
10.i++在计算时,会用到中间变量存储,会占用更多的内存和时间。所以++i更好。
11.vector是顺序存储的,只有在尾部插入才不会导致迭代器失效,在头部插入或者中间插入都会导致插入的部位以及其后的所有迭代器都失效;
map是映射,key和value是一一对应的,在内存中是零散存在的,迭代器通过key找到value,无论怎么插入都不会让迭代器失效,当然删除只会使得被删除
元素的迭代器失效。
12.在C++STL中常用的容器和类型中,支持下标"[]"运算的有vector,deque,map,unordered_map,string。
vector:随机访问迭代器,复杂度O(1)
deque:同上,O(1)
map:双向迭代器,不过由于是关联容器,需要通过key访问alue的方法,O(h),h为树的高度
unordered_map:前向迭代器,同上,平摊复杂度O(1),最差O(n),也与散列函数的好坏有关。
string:同vector