我不确定我做错了什么,但有些Rtable[0,7]是如何从0到2收费的,我认为这是一个分配问题,但我不认为我分配错了,但问题是我真的分配错了内存吗?
int *Rtable;
Rtable = (int *) malloc(sern * (2*sern) * sizeof(int));
initialize(sern, Rtable);
and my initialize method is:
void initialize(int sern, int *Rtable){
int row, column;
for(row = 0; row < sern; row++){
for(column = 0; column < sern; column++){
Rtable[row*sern + 2*column] = (row == column) ? 0 : 1000;
Rtable[row*sern + (2*column) + 1] = (row == column) ? row+1 : 0;
printf("row: %d, and column: %d, data: %dn",row, 2*column, Rtable[row*sern +2*column]);
printf("row: %d, and column: %d, data: %dn",row, 2*column+1, Rtable[row*sern +2*column+1]);
//Rtable[row][2*column] = (row == column) ? 0 : 1000;
//Rtable[row][(2*column)+1] = (row == column) ? row+1 : 0;
}
}
int i, k;
for(i = 0; i < sern; i++){
printf("data[%d] is : ", i);
for(k = 0; k < (2*sern); k++)
printf("%d:%d, ",k,Rtable[i*sern + k]);
printf("n");
}
}
列数实际上是2*sern
。因此表达式Rtable[row*sern + 2*column]
应该是Rtable[row*(2*sern) + 2*column]
。