【发布时间】:2014-09-20 19:40:10
【问题描述】:
所以我已经阅读了其他线程,但我无法弄清楚。我的代码如下,它工作正常。
double **sort(int counter, double **a){
int i, j;
double swap0, swap1;
for (i = 0 ; i < ( counter - 1 ); i++){
for (j = 0 ; j < counter - i - 1; j++){
if (a[0][j] > a[0][j+1]){
swap0 = a[0][j];
swap1 = a[1][j];
a[0][j] = a[0][j+1];
a[1][j] = a[1][j+1];
a[0][j+1] = swap0;
a[1][j+1] = swap1;
}
}
}
return a;
}
main(){
double **dist_table;
int i;
dist_table = (double **)calloc(2,sizeof(double*));
dist_table[0] = (double *)calloc(5,sizeof(double));
dist_table[1] = (double *)calloc(5,sizeof(double));
dist_table[0][0] = 5.1;
dist_table[1][0] = 0;
dist_table[0][1] = 6.1;
dist_table[1][1] = 1;
dist_table[0][2] = 3.1;
dist_table[1][2] = 2;
dist_table[0][3] = 2.1;
dist_table[1][3] = 3;
dist_table[0][4] = 7.1;
dist_table[1][4] = 4;
dist_table = sort(5, dist_table);
}
但是我读到将 **a 作为参数传递是错误的。那么为什么我的代码运行良好,哪种方式是正确的呢?
【问题讨论】:
-
您能指出您阅读该论点的来源吗?
-
@DhavalKapil eskimo.com/~scs/cclass/int/sx9a.html 我知道这太老了,但最后它说这个论点是错误的
-
@user3143155:该页面正在讨论多维数组,这不是您在这里所拥有的。您在这里拥有的是一个一维(动态分配的)指针数组,其中的每个元素都指向另一个由
doubles 构成的一维(动态分配)数组。实际的多维数组在内存中的表示方式与此不同,这正是链接页面说不要混淆它们的原因。 -
是的@PaulGriffiths 是对的。