int a1;
int* a2 = new int;
int* a3 = new int(); //相对前者表示指向的堆中数据处理,为0; 很多编译器已经不做区分
cout << sizeof(a1); // 4
cout << sizeof(a2); // 8
int* a = new int[4];
cout << a; //假设为1040
cout << a + 1; // 1044
//a 往后挪动 到堆中数组的下一个值
class A
{
public:
int* a;
int* b;
}
A* ptr_a = A aa[4];
cout << ptr_a; //假设1040
cout << ptr_a + 1; // 1064
【C++ 随想记录】指针小回顾
本文探讨了C++中的动态内存分配(如`new`和`delete`),数组初始化,以及类对象内存布局。通过实例解析了不同类型的指针操作和内存占用。特别关注了`int* a[]`与`int* a = new int[4]`的区别,以及类成员指针的内存地址计算。
摘要由CSDN通过智能技术生成