我们都知道,关于字符串指针是指向字符串数组首地址的
TCHAR str[]=TEXT(“测试字符串”);
TCHAR* pStr=str;
今天要来说说关于字符串组成的数组
TCHA strArray[2][256]={TEXT(“测试字符串1”),TEXT(“测试字符串2”)};
TCHAR** p=strArray;
cout<<p[0]<<" "<<p[1]<<endl;
p[0]中保存的是字符串"测试字符串1’'的首地址
p[1]中保存的是字符串"测试字符串2"的产地址
这就说明,一级指针保存的是字符串的首地址
二级指针保存的是由多少个一级指针组成的数组的首地址
因一级指针是指针变量大小为4字节,所以二级指针就可以通过指针偏移来获得一级指针
下面通过新创建一个二级指针来说明下:
//新创建由二个一级指针组成的指针数组
TCHAR** pStrArray=new TCHAR*[2];
//赋值1
//新创建二个一级指针指向的内存空间
pStrArray[0]=new TCHAR[256];
pStrArray[1]=new TCHAR[256];
//复制数据到内存空间
_tcscpy_s(pStrArray[0],256,TEXT("测试数据1"));
_tcscpy_s(pStrArray[1],256,TEXT("测试数据2"));
//赋值2
pStrArray[0]=_tcsdup(TEXT("测试数据1"));
pStrArray[1]=_tcsdup(TEXT("测试数据2"));
///_tcsdup其实就是和上面赋值1一样,新开辟一个和字符串相同大小的内存,拷贝字符串,再返回内存首地址
这样是不是很容易的就明白二级指针了
一级指针指向一个新开辟的内存空间,
二级指针指向由二个一级指针组成的数组首地址,
(数组元素大小都是4个字节)
二级字符串指针的释放
//先删除一级指针的内存
delete[] pStrArray[0];
delete[] pStrArray[1];
//再删除二级指针
delete[] pStrArray;