4

私はPythonを使用してプロジェクトに取り組んでいますが、Cでサンプルコードを与えられました.FILEと* fpの*の意味を知りたいだけです. 私に与えられた実際のコード例は次のとおりです。

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

2 に答える 2

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 引数の * に注意してください。上記のコードで 0.25 などの値に設定しましたが、「*」になっているという事実は、通常、メソッドがそれらに書き込むことを意味するため、上記の「printf」はおそらく異なる値を示します。私が彼らに割り当てたものから。

ああ、私が関数呼び出しに入れた '&' は、事実上 '*' の '反対' です。つまり、変数を指定すると、その変数へのポインターが返されます。これは、C で参照渡しがどのように実行されるかです。

于 2013-10-20T05:03:13.740 に答える