2

私はdoubleの配列を作成しようとしていますが、このように作成できることはわかっています。

double a[200];

しかし、なぜ私はこのようなものを作成できないのですか?

int b = 200;

double a[b];

それは動作しません。

誰か助けてもらえますか?

アップデート:

int count;
count = 0
while (fgets(line,1024,data_file) != NULL)
{
    count++;
}

double *x = (double *)malloc(count * sizeof (double));

double xcount = 1.0;

for (int i = 0; i < count; i++)
{
    x[i] = xcount/f;
    xcount = xcount + 1.0;
    printf("%lf\n", x[i]);
}
4

2 に答える 2

3

@DoxyLoverは完全に正しいです。さらに、配列のサイズとして定数を使用する場合は、C++のような#define kMaxN 200またはconst int kMaxN = 200C++用のmarcoを使用できます。

関数に配列を割り当てたい場合は、次のように使用できます。

int foo(int n) {
  int a[n];
}

または、多次元配列をパラメーターとして渡したい場合は、次を使用できます。

int foo(int n, int arr[][n]) {
...
}
于 2013-03-04T02:29:58.020 に答える
2

Cは動的配列サイズをサポートしていません。メモリを動的に割り当て、ポインタを使用する必要があります。

int b = 200;

double *a;
a = malloc(b * sizeof (double));

この後、配列であるかのようににアクセスできます。

于 2013-03-04T02:19:53.643 に答える