[加餐]指针和动态内存管理
X64环境下的地址较长 X86环境下的地址较短
每个字节都有其对应的地址
编译器在每次编译代码时,给eg:变量分配的空间位置不一定跟上次一样
字符的地址用cout打印的话会以为是字符串(因为会被看做是C风格字符串的起始地址)
,所以一般用printf打印
int*强转成char*(会发生类型截断)再强转成int*(会发生类型扩展,恢复原来状态)
void*强转成其他类型会通过类型截断和扩展让强转后可以正常使用
地址之间也可以比大小
随着数组下标的增长,地址是由低到高变化的
静态区也叫做数据段
*指针变量得到的是指针指向的地址中存的值
默认情况下,堆区的空间都需要手动申请和释放
C++中new可以申请数组空间的同时初始化(但要C++11及之后才行)
int* arr = new int[5]{1, 2, 3, 4, 5};