c - 为什么许多 C 函数使用指针而不是使用 "return"来传递数据?

标签 c function

<分区>

这或多或少是一个关于方法论和基本原理的问题。在为 Linux 编写各种内核模块时,我对我认为是笨拙的函数设计方式感到困惑。例如,要在给定路径的情况下检索文件的 inode ,我必须使用如下内容:

struct inode *inode;
struct path path;
kern_path(path_name, LOOKUP_FOLLOW, &path);
inode = path.dentry->d_inode;

为什么不只是一个像这样工作的函数:

struct inode inode;
struct path path = kern_path(path_name, LOOKUP_FOLLOW);
inode = path.dentry->d_inode;

看起来更直观。

最佳答案

你会用the int that kern_path returns做什么? ?

函数能够返回某种错误代码非常重要,这样用户才能确保函数成功。有两个明显的选择:

  1. 返回错误码。

    这意味着您必须将要返回的其他值作为参数。

  2. 返回值。

    这意味着您必须将错误代码作为参数。

由于在 C 中只能返回 1 个值,因此您必须将某些东西作为参数,因为最终您要向用户返回两件事(错误代码和值)。

关于c - 为什么许多 C 函数使用指针而不是使用 "return"来传递数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31193259/

相关文章:

r - 编写一个将向量作为输入、丢弃不需要的值、删除重复项并返回原始向量的相应索引的函数

c - 在函数内部使用指针时出错

c++ - 内联函数 - 自动内联

c - 在函数中修改 vector

c++ - C++ 中的媒体播放器

c - 程序测试员,bash

c# - 使用名称中的参数调用函数

c - 初始化一个二维字符串数组并打印

c - 在 C 中提取 double 的最右边 N 位

c - 指针和字符数组