Я не понимаю, как используется указатель с матрицей a. Что происходит на *bmax = a[mm][*kp+1]
? Я не практичен с указателями.c указатели, используемые в качестве индекса матрицы
kp - целочисленная переменная. Вот мой код:
double **a;
double *bmax
void allocation() {
//...
a = (double **) malloc((m) * sizeof(double *));
for (i = 0; i <= m; i++)
a[i] = (double *) malloc((n) * sizeof(double));
}
void something(double **a, int mm, int ll[], int nll, int iabf, int *kp,
double *bmax) {
int k;
double test;
if (nll <= 0)
*bmax = 0.0;
else {
*kp = ll[1];
*bmax = a[mm + 1][*kp + 1];
for (k = 2; k <= nll; k++) {
if (iabf == 0)
test = a[mm + 1][ll[k] + 1] - (*bmax);
else
test = fabs(a[mm + 1][ll[k] + 1]) - fabs(*bmax);
if (test > 0.0) {
*bmax = a[mm + 1][ll[k] + 1];
*kp = ll[k];
}
}
}
}
int main(){
int kp;
for(;;){
//some code
something(a,m+1,l1,nl1,0,&kp,&bmax);
}
}
'i <=m' -->' i
BLUEPIXY
@andrea Это утверждение * bmax = a [mm] [* kp + 1]; является недействительным и не имеет смысла. Покажите скомпилированный пример, демонстрирующий проблему. –
Где указывает 'bmax'? Я вижу глобальный 'bmax' и параметр функции' bmax', но почему? –