私はPythonを使用してプロジェクトに取り組んでいますが、Cでサンプルコードを与えられました.FILEと* fpの*の意味を知りたいだけです. 私に与えられた実際のコード例は次のとおりです。
int read_data(FILE *fp, int *id, double *prob_unm, double prob_mut)
私はPythonを使用してプロジェクトに取り組んでいますが、Cでサンプルコードを与えられました.FILEと* fpの*の意味を知りたいだけです. 私に与えられた実際のコード例は次のとおりです。
int read_data(FILE *fp, int *id, double *prob_unm, double prob_mut)
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 で参照渡しがどのように実行されるかです。