虽然这个主题已经多次讨论过,但到目前为止我还没有找到任何令人满意的答案。何时从函数返回数据 返回 或通过 参考 更改地址数据?经典的答案是在变量变大时将变量作为函数的引用传递(以避免堆栈复制)。这看起来像结构或数组。但是,从函数返回指针并不罕见。实际上有些函数从C库到确切的东西。例如:
char *strcat(char *dst, const char *src);
即使出现错误,也始终返回指向目标的指针。在这种情况下,我们可以只使用传递的变量并保留返回值(与大多数情况一样)。
在看结构时,我发现同样的事情正在发生。我经常在函数时返回指针 只要 需要在变量初始化中使用。
char *p = func(int i, const char *s);
然后有一个论点,堆栈应对变量是昂贵的,所以使用指针代替。但如上所述 这里 一些编译器能够自己决定(假设这也适用于C)。是否有一般规则,或者至少有一些不成文的惯例何时使用其中一个?我重视高于设计的性能。