Nsstring与char*

    /*nsstring->char*/
    NSString* str = @"hello world";
    char cha[20];
    memcpy(cha, [str cStringUsingEncoding:NSUTF8StringEncoding], 2 * [str length]);
    /*nsstring->char**/
    const char* cc = [str UTF8String];
    /*char*->nsstring*/
    NSString* str1 = [NSString stringWithCString:cc encoding:NSUTF8StringEncoding];
    NSLog(@"%@",str1);
    /*NSMutableString->nsstring*/
    NSMutableString* SN = [[NSMutableString alloc]initWithCapacity:20];
    [SN appendString:@"hello"];
    const char* dd = [SN UTF8String];

总结:

1,nsstring的地址随着值的变化而变化,而nsmutablestring的地址不变。原因可能是nssring指向了静态存储区的内容,而nsmutablestring在堆里有自己真正的空间。

2,cha[20]虽然只有前11个字符有效,12个为/0,但后面依然有内容。原因是因为memcpy不管是否遇到/0,都复制内存,与strcpy不一样。

以上都是个人理解,如有不正确的,还望指点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值