我想将两个数组的笛卡尔积保存到一个多维数组中。
arr[number][0]
- 来自第一个数组的
arr[number][1]
数字 - 来自第二个数组的数字
数 = 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() 函数内的嵌套循环中出现了奇怪的中断。逻辑没问题,我认为问题可能出在指针上。
- 为什么我需要用两个指针初始化多维数组?
- 为什么这段代码不起作用?
- 你对我如何改进这段代码有什么建议吗?(我没有用 C 编写太多代码,所以我不知道“好”代码使用哪种结构)。