13

私は今までにこれを行う20の方法を試したに違いありません。本当に助けが必要です。何をしても、このようなエラーが表示されます。

a value of type "int" cannot be used to initialize an entity of type "int (*)[30]"

つまり、これは私にそのようなエラーを取得します

int(*array)[160] = malloc((sizeof *array) * 10);

そして、このようなことをしています

int** Make2DintArray(int arraySizeX, int arraySizeY) {
    int** theArray;
    theArray = (int**) malloc(arraySizeX*sizeof(int*));
    int i;
    for (i = 0; i < arraySizeX; i++)
    {
        theArray[i] = (int*) malloc(arraySizeY*sizeof(int));
    }
    return theArray;
}

これを手に入れます

"void *(size_t)" in "memory.c" at line 239 and: "int()" 

int[160][10]の2dArrayを正常に割り当てる方法の解決策はありますか?

4

6 に答える 6

5

配列を割り当てるには:

int *array = malloc(sizeof(int) * 160 * 10);

次に、次のようなコードを使用します。

array[10 * row + column] = value;

(どこrowで 0 から 159 までを含み、column0 から 9 までを含みます。)

于 2012-12-03T05:21:42.380 に答える
0

レンドンの答えにメモがあります:

彼のコードでは、Visual C++ はすべての "=" 操作について次のように述べています。error C2440: '=' : cannot convert from 'void *' to 'int **'

いくつかの変更を加えることでうまくいきますが、同じようになるかどうかわからないので、彼のコードを編集するのが怖いです. 代わりに、これが最初の印象で機能するように見える私のコードです。

int **a;    

a = (int **)malloc(rows * sizeof(int));

for (i = 0; i < rows; i++)
{
    a[i] = (int *)malloc(cols * sizeof(int));
}

for (j=0;j<rows;j++)
{
    for (i=0;i<cols;i++)
    {
        a[i][j] = 2;
    }
}

実際、私はs のstruct代わりにカスタムでそれを行いましたintが、どちらの方法でも機能すると思います。

于 2013-07-23T18:46:48.573 に答える