字符串二级指针TCHAR**的理解

我们都知道,关于字符串指针是指向字符串数组首地址的
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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值