-3
我对指针和C一般都很陌生。C指针2维移动到顶部
void moveUpToTop(int num, int dim, int index) {
int i,j;
double *temp = w[index];
double *zero = w[0];
for(i = index; i > 0; i--) {
double *ptrA = w[i];
double *ptrB = w[i - 1];
for(j = 0; j < dim; j++) {
*(ptrA + j) = *(ptrB + j);
}
}
for(j = 0; j < dim; j++) {
*(zero + j) = *(temp + j);
}
}
用一个2维数组w定义为double ** w。我想使用指针将索引“index”的数组值移动到数组顶部,因为这是我们必须做的练习。首先,我保存了一个阵列位置,然后我将所有阵列位置向上移动一次。 我在做什么错?
鉴于我是下面的代码,我必须设计排序功能。
double **w;
int main (void) {
int dim, num;
int i, j;
scanf ("%d %d", &dim, &num);
w = calloc (num, sizeof (double *));
for (i = 0; i < num; i++) {
w[i] = calloc (dim + 1, sizeof (double));
int sum = 0;
for (j = 0; j < dim; j++) {
scanf ("%le", &w[i][j]);
sum += w[i][j] * w[i][j];
}
w[i][dim] = sqrt(sum);
}
sort(num, dim);
for(i = 0; i < num; i++) {
for(j = 0; j < dim; j++) {
printf("%e ", w[i][j]);
}
printf("\n");
}
return 0;
}
'double **'不定义二维数组。这是一个指针指针。它只是非常轻微的表现得像一个数组。 – StoryTeller
'double **'不是二维数组,不能指向一个。如果您需要,可以使用2D阵列。阅读[问],提供[mcve]。 – Olaf
你是什么意思“移动一些数组的值索引”索引“直到阵列的顶部”? – user2357112