例如:
void foo1(char *buffer) {
buffer[0] = 'a';
}
char *foo2(char *buffer) {
buffer[0] = 'a';
return buffer;
}
当我想修改一个字符串时,可以这样做:
mystr[] = "foobar";
foo1(mystr);
printf("%s",mystr);
或者使用返回值:
mystr[] = "foobar";
char *mystr2;
mystr2 = foo2(mystr);
printf("%s",mystr2);
我对第二种方法有些困惑:mystr和mystr2指向不同的位置,但保存着相同的字符串。我原以为foo2返回时会将修改后的mystr的地址复制到mystr2,但实际发生了什么?
第二个问题是:哪种方式修改字符串更加标准?
mystr
被修改了,而mystr2
指向了mystr
。尝试也打印出第二个例子中的mystr
。 - Some programmer dudeprintf("%s", foo2(mystr))
在某些情况下可能很有用,但在其他情况下则不然。 - Some programmer dude