关于C/C++的一些知识点整理 (9)
1.strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素。
而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。计算为'\0'的数组元素。
2. 0~9 的ASCII码值是48~57。 a~z 的ASCII码值是 97~122。 A~Z的ASCII码值 是 65~90。
3.C语言有编辑、编译、执行三大过程。
C语言在编译前由预处理器对预处理命令进行处理,编译时进行语法分析。
执行过程就是运行程序。
4.fseek函数: int fseek( FILE *stream, long offset, int origin );
第一个参数stream为文件指针;
第二个参数offset为偏移量,整数表示正向偏移,负数表示负向偏移;
第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR当前位置、 SEEK_END文件结尾 或 SEEK_SET文件开头
5.const char *p的意思是p指向的目标空间的内容不可变化,
char * const p的意思是指针p的值不可变,但它指向目标的值可变。
例如:const char ch = 'a'; char* const p = &ch1;
const char* p = &ch; p = &ch2; //这样是错的
*p = 'b'; //这样是错的
(通俗的讲:const的右边如果靠近*,则*p不能改变,如果const的右边靠近p,则p不能改变)
6.
解析:
7.死代码的含义是指永远不会被执行到的代码段,而不是直接抛弃被注释的代码。
函数内联可以避免函数调用中压栈和退栈的开销。
for循环的循环控制变量通常很适合调度到寄存器访问。
强度削弱是指执行时间较短的指令等价的替代执行时间较长的指令。
8.“优先使用对象组合,而不是继承”是面向对象设计的第二原则。
组合也叫“对象持有”,就是在类中定义另一类型的成员,继承会破坏类的独立性,增加系统的复杂性,一般系统的继承层次不超过3层。组合拥有良好的扩展性,支持动态组合。
9.C++真正正式公布的标准就三个:
C++98、C++03、C++11。
其中C++98是第一个正式C++标准,C++03是在C++98上面进行了小幅度的修订,C++11则是一次全面的大进化(之前称C++11为C++0x)。
10.
解析:
A在vs编译器里面直接报错,主要是一个指针是不能乘以一个数的,没有这种重载;
C错是只能初始化一个int,int无论在64位还是32机器都是4个字节,64位和32位电脑中唯一有区别的就是指针所占的字节数。
11.int *s[8]; //定义一个指针数组,该数组中每个元素是一个指针,每个指针指向哪里就需要程序中后续再定义了。
int (*s)[8]; //定义一个数组指针,该指针指向含8个元素的一维数组(数组中每个元素是int型)。
12.C++类体系中,不能被派生类继承的有构造函数、静态成员函数、赋值操作函数。