0

そのため、サイズが決定されるループの外で参照できるように、int の 2D 配列にメモリを割り当てようとしています。(配列のサイズが固定されていないため、スコープの問題があります。)

これが提案された解決策でしたが、「スクリプト化された値は配列でもポインターでもありません」というエラーが表示されます。私が間違っていることを知っている人はいますか?

//M and m are just 2 int numbers
int X = self.create2dArray(M,m);

for(int kk = 0; kk < M; kk++)
{   
for (int kk1 = 0; kk1 < m; kk1++)
        {
//small "x" is an NSMutableArray of NSNumbers.  So I am just running the 2 for loops to fill the whole 2D array
        X[kk][kk1] = [[x objectAtIndex: (kk + kk1 * J)] intValue]; //ERROR Line
        }                   
}

//outside of Main

static inline int **create2dArray(int w, int h)
{
    size_t size = sizeof(int) * 2 + w * sizeof(int *);
    int **arr = malloc(size);
    int *sizes = (int *) arr;
    sizes[0] = w;
    sizes[1] = h; 
    arr = (int **) (sizes + 2);

    for (int i = 0; i < w; i++)
    {
        arr[i] = calloc(h, sizeof(**arr));
    }

    return arr;
}
4

2 に答える 2

1

最初の行はint** X代わりにint X

于 2012-05-08T20:34:58.403 に答える
0

さて、あなたの問題は、整数のメモリを手動で割り当てることにある可能性が最も高いでしょう。私が提案する解決策は、ランダムな「フィラー」番号、たとえば 0 で埋めることです。そうすることで、割り当てプロセスを台無しにするリスクがなくなります。さらに、後で整数を入力することになるため、はるかに簡単で機能します。これが役に立ったことを願っています!

于 2012-05-08T20:27:24.930 に答える