gpt4 book ai didi

c - 如何访问另一个结构内的结构内的元素作为指针?

转载 作者:行者123 更新时间:2023-12-02 06:41:51 25 4
gpt4 key购买 nike

我正在尝试使用 SuperLU 进行矩阵求逆,但我无法访问最终结果。它使用一些结构进行反演,我知道答案在一个结构内,但我无法引用它。

B 被定义为具有以下格式的超矩阵:

typedef struct {
Stype_t Stype; /* Storage type: indicates the storage format of *Store. */
Dtype_t Dtype; /* Data type. */
Mtype_t Mtype; /* Mathematical type */
int nrow; /* number of rows */
int ncol; /* number of columns */
void *Store; /* pointer to the actual storage of the matrix */
} SuperMatrix;

基于 Stype 的存储结构发生变化。对于 B,用于 *Store 的结构是:

typedef struct {
int lda; /* leading dimension */
void *nzval; /* array of size lda-by-ncol to represent
a dense matrix */
} DNformat;

因此 B 的最终结构应该是:

B = { Stype = SLU_NC; Dtype = SLU_D; Mtype = SLU_GE; nrow = 5; ncol = 5;
*Store = { lda = 12;
nzval = [ 19.00, 12.00, 12.00, 21.00, 12.00, 12.00, 21.00,
16.00, 21.00, 5.00, 21.00, 18.00 ];
}
}

现在我想从 nzval 中复制值,但我不确定如何复制。

我尝试执行 B.Store.nzval,但错误是“请求成员 `nzval' 不是结构或 union ”

还有

DNformat **g = B.Store;
int *r = *(g->nzval);

还有其他一些类似的事情,但不确定如何解决。

非常感谢!

最佳答案

DNformat *g = (DNformat *)B.store;
int *r = (int *)g->nzval;

如果你想简洁,你可以把它们放在一起:

int *r = (int *)((DNformat *)B.store)->nzval;

关于c - 如何访问另一个结构内的结构内的元素作为指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6433197/

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