gpt4 book ai didi

c 用作矩阵索引的指针

转载 作者:行者123 更新时间:2023-11-30 17:12:21 25 4
gpt4 key购买 nike

我不明白如何将指针与矩阵 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);
}
}

最佳答案

在继续阅读之前,必须先了解指针的基本概念,看一下代码片段:

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是一个指向 double 的指针

因此,如果我们计算上面的方程,则 *kp+1integer mm+1 也是如此。因此,a[integer][integer]指向某个值(如果索引有效),该值将存储到内存 bmax指向。

关于c 用作矩阵索引的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31629991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com