1.define换行编写,加"\"
#define MACRO(arg1, arg2) do { \
\
stmt1; \
stmt2; \
\
} while(0)
2.abs(),fabs(),fabsf()区别
int abs(int i); // 处理int类型的取绝对值
double fabs(double i); //处理double类型的取绝对值
float fabsf(float i); /处理float类型的取绝对值
3.memcpy()的参数意义
函数原型
void *memcpy(void *destin, void *source, unsigned n);
参数
destin-- 指向用于存储复制内容的目标数组,类型强制转换为 void* 指针。
source-- 指向要复制的数据源,类型强制转换为 void* 指针。
n-- 要被复制的字节数。
返回值
该函数返回一个指向目标存储区destin的指针。
功能
从源source所指的内存地址的起始位置开始拷贝n个字节到目标destin所指的内存地址的起始位置中。 [2]
所需头文件
C语言:#include<string.h>
C++:#include<cstring>
4 . 基础内存
1. int,long int,short int的宽度随编译器而异
1.1 16位编译器
char :1个字节
char*(即指针变量): 2个字节
short int : 2个字节
int: 2个字节
unsigned int : 2个字节
float: 4个字节
double: 8个字节
long: 4个字节
long long: 8个字节
unsigned long: 4个字节
1.2 32位编译器
char :1个字节
char*(即指针变量): 4个字节
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 4个字节
long long: 8个字节
unsigned long: 4个字节
1.3 64位编译器
char :1个字节
char*(即指针变量): 8个字节
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 8个字节 (定义是long至少不小于int)
long long: 8个字节 (long long至少不小于long)
unsigned long: 8个字节
2. C 标准要求 float 类型精度7位 double双精度完全保证的有效数字最高是15位
5 . 结构体内存对齐使用
#pragma pack(4)
...
#pragma pack()
6 . 前向声明
class B 内使用 class A成员,只能通过指针或者引用方式调用;
class A;
class B
{
A* a; // 前向声明的类不能实例化对象
}