我想將兩個數組的笛卡爾積保存到一個多維數組中。C - 結構和列表
arr[number][0]
- 從所述第二陣列數目
數=的sizeof(數組1)*的sizeof(數組2)
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;
};
但是,此代碼strangly場所,同時 -
arr[number][1]
從所述第一陣列數在getProduct()函數的嵌套循環中。邏輯是好的,我的問題可能是與指針。
- 爲什麼我需要用兩個指針初始化多維數組?
- 這段代碼爲什麼不工作?
- 對此我有何建議?我該如何改進此代碼? (我沒有用C編寫太多的代碼,所以我不知道「好」代碼使用哪種結構)。因爲你是一個int指針(即
int**
)分配一個指針爲int(即int*
)的指針
這個代碼不應該編譯。確保您注意編譯器生成的警告/錯誤消息。 –
你能至少幫我分配這個dwodimentional數組的內存嗎? :P – khernik