Давайте представим себе, что у нас есть функция, которая должна возвращать два возвращаемых значения. Например, у нас есть функция, которая возвращает char*
и ее длину. Char выделяется внутри этой конкретной функции.Эффективные множественные возвращаемые значения
Я могу представить себе следующие способы сделать это:
int foo(char **result); // Passing pointer to char*, returning int
char* bar(int *len); // Passing pointer to int, returning char*
struct char_and_len foobar(); // Returning struct that contains both values
Есть ли другие способы реализации нескольких значений и то, что наиболее эффективный способ сделать это?
Я очень благодарен за подробное объяснение, учитывая производительность, выравнивание памяти или любую другую скрытую функцию C.
Зачем нужны более умные варианты, чем вы предоставили? При этом вы просто запутываете свой код. – meagar
@meagar. Зачем? Мне любопытно, каковы другие способы сделать это. Могут быть некоторые действительно интересные причины этого. Более того, у меня есть сильное чувство, что в C разные способы делать то же самое могут иметь разные эффекты и соображения. – Sigurd