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不一样。

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

你可能感兴趣的:(ios,NSString)