Существуют различные способы вернуть структуру из функции, например, вернуть всю структуру или вернуть только указатель. возвращающий указатель полезен, чтобы избежать накладных расходов стека, поскольку нам не нужно возвращать всю структуру. С другой стороны, для небольшой структуры это хорошо для go с возвратом всей структуры.
В моем случае у меня есть сценарий ниже, чтобы получить структуру из другого файла, и я подумал о различных методах для использования, но, поскольку я новичок в C, все же мне понадобился совет специалиста, такой как
, какой метод лучше? Любая проблема в этом? или какое-либо предложение для нового метода?
возврат большой структуры как целого вызывает проблему стека?
file1. c
static struct_type mysruct; //Note : here struct size is 250+ bytes
//Method 1
struct_type getStructDataMethod1()
{
return mysruct;
}
//Method 2
void getStructDataMethod2(struct_type *structPtr)
{
if(structPtr != NULL)
{
memcpy(structPtr, &mysruct, sizeof(struct_type));
}
}
//Method 3
void getStructDataMethod3(struct_type *structPtr)
{
*structPtr = mysruct;
}
file2. c
void myFunction()
{
struct_type mylocalStruct1 = getStructDataMethod1();
struct_type mylocalStruct2;
struct_type mylocalStruct3;
getStructDataMethod2(&mylocalStruct2);
getStructDataMethod3(&mylocalStruct3);
}