29,031
社区成员
发帖
与我相关
我的任务
分享
void changeStr(NSString **str2){
*str2 = @"123";
}
void my(NSString *ss){
NSLog(@"传入前的地址是%p -> %p -> %@",&ss,ss,ss);
//NSLog(@"%@",*ss);
//*(&(*ss)) = @"333";
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str = @"456";
changeStr(&str);
NSLog(@"%@",str);
NSString *s = @"123";
NSLog(@"传入前的地址是%p -> %p -> %@",&s,s,s);
changeStr2(s);
NSLog(@"%@",s);
}
return 0;
}
void changeStr(NSString **str2)
{
*str2 = [[NSString alloc] initWithFormat:@"%s", "changeStrchangeStrchangeStrchangeStr"];
}
void my(NSString *ss){
NSLog(@"传入前的地址是%p -> %p -> %@",&ss,ss,ss);
*(&ss) = [[NSString alloc] initWithFormat:@"%s", "mymymymymymymymy"];
NSLog(@"%@", ss);
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str = [[NSString alloc] initWithFormat:@"%s", "456"];
NSLog(@"before changeStr %@",str);
changeStr(&str);
NSLog(@"after changeStr %@",str);
NSString *s = [[NSString alloc] initWithFormat:@"%s", "123"];
NSLog(@"传入前的地址是%p -> %p -> %@",&s,s,s);
my(s);
NSLog(@"after my %@",s);
}
return 0;
}
OC对象的指针,跟C/C++的指针有比较大的差别的,如果非要在函数中处理字符串且通过参数返回改变后的值,建议使用char指针或数组做参数来处理。