我有一种情况,我在内存中有一个很大的字符串,我想用函数来提供它的切片(例如,给我一个从 30 开始的 14 个字符的运行)。为了完成这项工作,我必须让消费者对他们的缓冲区使用双指针。
void foo(char** bar)
{
char* tmp = "nope";
*bar = &tmp[1];
}
int main (int argc, char const *argv[])
{
char* baz = "yep";
foo(&baz);
printf("%s", baz);
return 0;
}
但是,如果我查看各种库函数,如 pread 或 strcpy,它们只接受一个指针级别的字符串缓冲区。
他们是怎么做到的?似乎他们也应该需要一个双指针来以相同的方式“在另一边”更改值。