文件和* fp翻译

时间:2013-10-20 03:30:50

标签: c python-3.x

我正在使用python开发一个项目,但我在C中给出了示例代码,我只想知道 FILE 和* in * fp的含义是什么。 给我的实际代码行是:

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

2 个答案:

答案 0 :(得分: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等值,但事实上它们通常意味着该方法打算写入它们 - 所以&#39; printf&#39;以上可能会显示我所指定的不同值。

哦,&#39;&amp;&#39;我在函数调用中实际上是对面的&#39; &#39; *&#39; - 它意味着,给定一个变量,返回一个指向该变量的指针。它是如何在C中执行Passing-By-Reference的。

答案 1 :(得分:1)

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

在Python中,等效的是一个文件对象,就像fileopen函数返回的文件对象一样。