指针
一、初始化
https://www.cnblogs.com/SarahZhang0104/p/5749680.html
https://blog.csdn.net/zhouzikai45/article/details/78738890
参考链接:new与指针
1、一维数组
1)静态 int array[100]; 定义了数组array,并未对数组进行初始化
2)静态 int array[100] = {1,2}; 定义并初始化了数组array
3)动态 int* array = new int[100]; delete []array; 分配了长度为100的数组array
4)动态 int* array = new int[100](1,2); delete []array; 为长度为100的数组array初始化前两个元素
2、
二、动态delete
1、delete ptr; delete [] ptr;
2、在将动态申请的指针指向别的地址之前,请提前释放动态内存;
一般情况下,也会增减动态指针,需要返回初始值,便于释放动态内存;
三、移动指针(指针计算)
1、arraymame[i] 等同于 *(arrayname + i);
2、ptr++:
(1)将指针ptr移动到下一个位置,而不是移动一个字节,移动了sizeof(T)个字节。如果指针类型是int,切勿如此计算ptr+sizeof(int)
(2)如果 ptr 指向一个地址为 1000 的字符,上面的运算会导致指针指向位置 1001,因为下一个字符位置是在 1001
(3)初始指针ptr是uchar*类型,如果需要用它操作double数组,可以先类型转换(double*)ptr,然后计算ptr++
3、如果移动了p,后面需要改为初始值方便delete释放
(1)double* p=new double[3];p=p+1;p[0]+1变成了初始时的p[2]