4

我正在使用 python 开发一个项目,但我得到了 C 语言的示例代码,我只想知道FILE和 *fp 中的 * 是什么意思。给我的实际示例代码行是:

    int read_data(FILE *fp, int *id, double *prob_unm, double prob_mut)
4

2 回答 2

4

在您的代码行中,fp表示“文件指针”。在 C 标准库中,例如使用fopen函数打开文件时,会返回一个FILE指针。FILE是一种保存文件信息的结构。它作为指针返回,因为需要对它的引用,因为它会被其他低级函数更改,例如。fclose.

在 Python 中,等价物是一个文件对象,如fileoropen函数返回的那个。

于 2013-10-20T05:04:32.500 回答
1

FILE 是一种数据类型——实际上是一种 C 结构。通常,它是通过调用“fopen()”来创建和返回的。

* 表示 read_data 需要一个指向 FILE 结构的指针,而不是整个数据结构本身。这很好,因为无论如何我们主要传递指向结构的指针。

因此,示例调用可能是:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE * fp;
    int id = 123;
    double prob_unm = 0.25;
    double prob_mut = 0.5;

    fp = fopen ("file.txt", "r");
    int n = read_data(fp, &id, &prob_unm, &prob_mut)
    fclose(fp);

    printf("%d %d %lf %lf", n, id, prob_unm, prob_mut);
 }

注意 int 和 double 参数上的 * s。即使我在上面的代码中将它们设置为 0.25 等值,它们是“*”的事实通常意味着该方法打算写入它们 - 所以上面的“printf”可能会显示不同的值根据我分配给他们的内容。

哦,我在函数调用中的“&”实际上是“*”的“相反”——这意味着,给定一个变量,返回一个指向该变量的指针。这就是 C 中通过引用传递的方式。

于 2013-10-20T05:03:13.740 回答