-1

プログラムが最初に実行されるたびにランダムなサイズの配列を作成したいのですが、コンパイラーが私を怒鳴りつけます

"Error  2   error C2466: cannot allocate an array of constant size 0"

SIZE最初にbyをランダムに選択しSIZE = rand() % 100、配列をint myarray[SIZE]={0}???で初期化する方法はありますか? または、最初に正確な番号で毎回初期化する必要がありますか?

int main(void) {
    int i;
    int SIZE=rand()%100;
    int array2[SIZE]={0};

    for(i=0;i<SIZE;i++)     //fill the array with random numbers
        array2[i]=rand()%100;
    ...
}
4

4 に答える 4

1

これを行う最善の方法は、配列をポインターにしてmallocを使用することです。

int SIZE=(rand()%100) + 1; //range 1 - 100
int *array2 = malloc(sizeof(int) * SIZE);

その後array2、配列を使用するのと同じように使用できます。

于 2013-05-02T18:09:03.000 に答える
1

malloc()orを使用calloc()して、C でこれを行うことができます。たとえば、

int SIZE=(rand()%100)+1; // size can be in the range [1 to 100]
int *array2 = (int*) malloc(sizeof(int)*SIZE);

しかし同時に、配列サイズは定数値以外にはなりません。

次の 2 つの宣言は有効です。

int a[10];

#define MAX 10
int b[MAX];

ただし、次のメソッドを使用して宣言しようとすると、エラーが発生します。

int x=10;
int a[x];

const int y=10;
int b[y];
于 2013-05-02T18:05:48.757 に答える