指针

一、初始化

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]

 

posted @ 2019-04-10 22:32  kuaqi  阅读(99)  评论(0编辑  收藏  举报