C - 我应该在函数中返回结果还是将其保存在参数指针指向的变量中?

Ste*_*n.W 2 c

我很困惑哪种风格更适合在C中编写函数:

int function() 
{ 
     /*code block*/ 
    return result;
}
Run Code Online (Sandbox Code Playgroud)

要么

void function(int *result) 
{
    /*code block*/ 
}
Run Code Online (Sandbox Code Playgroud)

就个人而言,我第一个想到的是清晰的(和喜欢Java风格),但是当我看到一些C函数声明为第二风格,喜欢gets(),shmget()和我的算法课程的老师建议我写第二样式声明,就像create_Queue(Queue *q),我想知道第二个是否是C风格,我应该遵循.

ala*_*ain 5

第一种风格适用于小型等int,如double等.

第二个对于大于int等的返回值是有意义的structs.

这具有以下优点:

  • 结果结构可以在堆栈上或堆上存在,由调用者自行决定.
  • 没有所有权问题,因为很明显调用者负责分配和释放结果结构.
  • 结构甚至可以比需要的更长,或嵌入更大的结构中.