指针数组和数组指针

先明白两个概念:

        去掉名字就是类型,”[  ]"与变量名的结合强度大于" * "。

     指针数组:指针数组,就像整形数组,字符数组一样。是一个类型+变量名的形式

int arr1[10];  //整形数组
char arr2[10]; //字符数组

int* arr3[10]; //指针数组

类型+名字:

               类型是整形,再加数组名,就是创建一个名为 arr1,可以存放10个整型数据的数组。

               类型是字符,再加数组名,就是创建一个名为 arr2 ,可以存放10个字符的字符数组。

               类型是int* ,再加数组名arr3,就是创建一个名为arr3,可以存放10个指针的指针数组。

int* p1=NULL;   //整形指针
 
char* p2=NULL;  //字符指针

int(*p3)[10]=NULL  //数组指针

类型+名字:

        int* 整形指针,名字为p1。 名为p1的整形指针

        char* 字符指针,名字为p2。名为p2的字符指针

        int (*) [] 数组指针,名字为p3。名为p3的数组指针(指针指向的时数组)

然后,今天没遇到的,在堆区释放内存时的操作:

Worker** newSpace=new Worker* [newSize]; 

new 是在堆区开辟一块空间,然后返回的类型是一个指针类型,而这句代码的意思是:在堆区创建指定个数的空间来存放指针,也就是在堆区创建一个指针数组,然后用一个二级指针来接收返回值,在delete空间时,这样操作:

// 先释放指针数组中的指针,再释放指向指针数组的指针
//删除堆区中的每个职工对象  释放的是数组中的指针(指针数组)
for (int i = 0; i < this->m_EmpNum; i++) {
	delete this->m_EmpArray[i];
	this->m_EmpArray[i] = NULL;
}
//删除堆区数组指针   释放的是指向数组的指针(数组指针)
delete[] this->m_EmpArray;
this->m_EmpArray = NULL;

 先逐一释放指针数组中指针,然后再释放指向指针数组的指针。对,就这样

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值