我试图在 C 中创建一个矩阵,其中每个元素都是一个 Bignum(来自 Openssl 库)。 我原以为它会是这样的,但它不起作用。
BIGNUM *p [2][2] = NULL;
int i; int j;
for(i=0;i<2;i++){
for(j=0;j<2;j++){
*p[i][j] = BN_new();
}
}
如有任何帮助,我将不胜感激。
最佳答案
我假设 BN_new()
的返回类型是 BIGNUM *
。
因为 BIGNUM *p[2][2]
是一个 2*2 的数组,元素的数据类型是 BIGNUM*
,所以对一个元素的赋值数组 p
,看起来像这样:
p[i][j] = BN_new();
这意味着您的代码应如下所示:
BIGNUM *p[2][2] = {NULL, NULL, NULL, NULL};
for( int i=0; i<2; ++i ) {
for( int j=0; j<2; ++j ) {
p[i][j] = BN_new();
}
}
表达式 *p[i][j]
将通过指针 p[i][j]
间接访问 BIGNUM
值>。这是可行的,因为索引运算符 []
优先于间接运算符 *
。
关于C 创建一个 Bignum 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48403289/