Вы можете передать ссылку в буфер или использовать глобальную переменную.
Когда вы используете ссылку, как в
void func(TypeName *dataStructure, LL_Node **accumulator, char buffer[]) {
func(datastructure->left, accumulator, buffer);
func(datastructure->right, accumulator, buffer);
{
char buffer[1000];
// do some stuff
}
return;
}
void main()
{
char buffer[1000];
func (structure, accum, buffer);
}
, вы передаете ссылку, просто указатель наначало массива, поэтому вы должны помнить его длину.
Если вы решите использовать глобальную переменную, вы фактически не используете стек, а выделяете программную память, общее пространство, где код и данные сосуществуют (код данных).Поэтому вы никогда не используете ни одного байта дополнительного оперативной памяти в своих вызовах, если вы делаете это следующим образом:
char buffer[1000];
void func(TypeName *dataStructure, LL_Node **accumulator) {
func(datastructure->left, accumulator);
func(datastructure->right, accumulator);
{
// do some stuff
}
return;
}
void main()
{
func (structure, accum);
}
Выбор за вами.Второй помещает меньше параметров в стек при каждом рекурсивном вызове, но увеличивает размер программы.Первый из них более элегантен для некоторых, но немного медленнее, может быть, даже не заметен.