2 つの配列のデカルト積を 1 つの多次元配列に保存したいと考えています。
arr[number][0]
- 最初の配列の
arr[number][1]
数値 - 2 番目の配列の数値
数値 = sizeof(array1)*sizeof(array2)
int main() {
int arr1[4] = {1, 4, 2, 3};
int arr2[4] = {4, 1, 3, 3};
int **outcomes = getProduct(arr1, 4, arr2, 4);
int i;
for(i = 0; i < 16; i++)
printf("%d", outcomes[i][0]);
getchar();
}
int* getProduct(int arr1[], int size1, int arr2[], int size2) {
int **outcomes = (int *)malloc(sizeof(int)*16), count = 0, i, j;
for(i = 0; i < size1; i++) {
for(j = 0; j < size2; j++) {
outcomes[count][0] = arr1[i];
outcomes[count][1] = arr2[j];
count++;
}
}
return outcomes;
};
ただし、このコードは、getProduct() 関数内のネストされたループにあるときに奇妙に壊れます。ロジックは問題ありません。問題はポインターにある可能性があります。
- 多次元配列を 2 つのポインターで初期化する必要があるのはなぜですか?
- このコードが機能しないのはなぜですか?
- このコードを改善するにはどうすればよいか、何かアドバイスはありますか? (私はあまり C でコーディングしなかったので、「良い」コードがどの構造を使用するのかわかりません)。