我不明白如何将指针与矩阵a一起使用。
在*bmax = a[mm][*kp+1]
发生了什么?我的指针不实用。
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);
}
}
答案 0 :(得分:0)
在进一步阅读之前,必须先用指针的基本概念清除,看一下代码片段:
int main() {
int *p; // pointer declaration
int a; // variable declaration
a = 10; // Storing the value
p = &a; // Storing the address of the 'a' into the memory of 'p'
printf("%u\n",p); // Print the value of p, address of a
printf("%i",*p);// Retrieve the value from the memory address saved as the value of the p, that is value of a = '10' (here)
return 0 ;
}
现在,请考虑以下行:*bmax = a[mm + 1][*kp + 1];
。这里,*kp
是指向int 的指针,这意味着它从存储在其中的内存地址中检索整数值。同样,*bmax
是指向双重的指针。
因此,如果我们评估上述等式,则*kp+1
为integer
,mm+1
也是a[integer][integer]
。因此,bmax
指向某个值(如果索引有效),它将存储到内存> max(count1,na.rm=TRUE)
[1] 202034
> min(count1,na.rm=TRUE)
[1] 0
> mean(count1,na.rm=TRUE)
[1] 8498.78
> summary(count1,na.rm=TRUE)
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
0 1555 3668 8499 8535 202000 58297
指向。