1.++i和i++哪个效率更高?
前缀式可以返回对象的引用,而后缀式必须返回对象的值所以导致在大对象产生时产生了较大的复制开销,因此处理自定义类型的时候尽量使用前缀式。
2.不使用任何中间变量将a、b的值进行交换。
a ^= b;
b ^= a;
a ^= b;
C++与C有什么不同
相对于C,C++多了重载、内联函数、异常处理,扩展了面向对象的设计内容:类、继承、虚函数、模板。
如何理解C++是面向对象的,而C是面向过程的
C++并不是完全的面向对象,它也可以写出面向过程的代码,只是拥有面向对象的特性。
标准头文件的结构
#include<>和#include”“有什么区别
C++main函数执行完之后还会执行其他的语句吗?
定义一个宏来实现求最大值和最小值
#define MAX(x,y) ((x) > (y) ? (x) : (y))
#define MIN(x,y) ((x) < (y) ? (x) : (y))
定义一个宏来得到一个字的高位字节和低位字节
#define WORD_LOW(xxx) (byte)((word)(xxx)&255)
#define WORD_HI(xxx) (byte)((word)(xxx)>>8)
定义一个宏得到一个数组所含元素的个数
#define ARR_SIZE(a) (sizeof((a)) / sizeof((a[0])))
说明const和define的特点及区别
C++中cosnt的三个作用
- 用于定义常量
- 修饰函数的形参
- 修饰函数的返回值
- 修饰类的成员函数
static的作用
- 函数体内声明静态变量,
- 函数体外,模块内声明静态变量,可以被模块内的所有函数都访问到。
- 模块内声明的静态函数只能被该模块内的函数调用。
sizeof和strlen的区别
- sizeof是操作符,而strlen是函数
- sizeof可以以类型作为参数,而strlen只能以字符串的首地址作为参数。
- 数组作sizeof的参数不退化,而作strlen的参数会被退化为指针。
- 大多数的编译器会在编译期计算出sizeof的长度,而strlen的结果要等到运行期才会计算出来。
- sizeof后如果是类型,则必须要加括号,如果是变量名,则不必加括号。
- 在计算字符串数组的长度上有区别
- 如果要计算指针指向的字符串的长度,一定要用strlen
sizeof有那些用途
- 与存储分配和I/O操作相关的系统接口进行通信
- 查看某个对象在内存单元中所占的单元字节
- 动态分配对象时,让系统知道需要多少字节
etc
#pragma的作用
C++中引入内联函数的原因
- 替代C语言中的宏来解决调用效率的问
- 宏定义不能对参数的有效性进行检查,返回值也不能被保证转化为合适的类型
- 内联函数可以具有访问控制的功能
为什么不把所有的函数都定义成内联函数
- 如果函数体内的代码过长,使用内联将导致内存消耗的代价比较高
- 如果函数体内出现了循环,使用内敛将导致消耗代价较高
- 递归函数不能定义成内联函数
指针和引用的区别
- 引用必须在创建的同时初始化
- 引用一旦指向一个对象就不可变更
- 引用不能指向NULL
Tips:在二进制的层面,引用一般通过指针来实现。
指针常量与常量指针的区别
- 指针常量:是指针的常量,本质是常量 int * const i;
- 常量指针:是常量的指针,本质是指针 const int* i / int const * i
指针数组与数组指针的区别
函数指针与指针函数的区别
typedef 定义函数指针
什么是野指针
有了malloc和free为什么还要new和delete
动态内存的传递
内存分配的几种方式
——————————